Страницы

Поиск по вопросам

Показаны сообщения с ярлыком чпу. Показать все сообщения
Показаны сообщения с ярлыком чпу. Показать все сообщения

пятница, 10 января 2020 г.

Возможно ли создание ЧПУ?

#php #чпу


Возможно ли создание ЧПУ на пхп(связь с БД) без внесения изменении в htaccess? 
Есть примеры?     


Ответы

Ответ 1



Вообще без .htaccess практически не возможно. Исключение - вы сконфигурируете свой сервер соответствующим способом. Хотя не думаю, что это легкий выход из положения. А вот избежать лишней головной боли с mod_rewrite можно. Я уже говорил тут об этом, но не могу найти этот пост, поэтому вкратце повторюсь. Создается правило, с помощью которого все запросы перенаправляются на морду, если директории или файла не существует физически на сервере. Например, так: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L] Теперь, вы ловите такие запросы в php: $request = $_SERVER['REQUEST_URI']; Разбираете полученную строку "на запчасти": по слешу для определения основных частей URI, учитывая окончание, если допустим адрес может быть /some_path/page.html и в зависимости от полученных данных, выводите ту или иную информацию.

Ответ 2



Да, возможно, такое ЧПУ сделано в CMS WordPress. Пример написали выше.

среда, 19 июня 2019 г.

ЧПУ постраничной навигации в Yii2

Есть у меня на главной странице в контроллере sitecontroller экшен
public function actionIndex() { $searchModel = new CourseSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, ]); }
CourseSearch
public function search($params) { $query = Course::find()->active()->with(['category'])->orderBy(['id' => SORT_DESC]);
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([ 'query' => $query, 'pagination' => [ 'pageSize' => 2, ],
]); .............
Который выводит список постов через вьюху
$dataProvider, 'layout' => "{items}
{pager}", 'itemView' => '_item', 'emptyText' => 'Ничего не найдено.', 'emptyTextOptions' => [ 'tag' => 'div class="alert alert-danger"' ], 'pager' => [ 'firstPageLabel' => '««', 'lastPageLabel' => '»»', 'nextPageLabel' => false, 'prevPageLabel' => false, 'maxButtonCount' => 5, ], ]); ?>
И постраничная навигация когда переходишь например на вторую страницу выдает вот такой вид:
mysite.ru/?page=2&per-page=2
Вот как сделать чтобы страницы выводились mysite.ru/page-2
'urlManager' => [ 'class' => 'yii\web\UrlManager', // Disable index.php 'showScriptName' => false, // Disable r= routes 'enablePrettyUrl' => true, 'rules' => [ 'page--' => 'site/index', '' => 'site/index', '' => 'site/', '' => 'site/category', '/' => 'site/view',


Ответ

Открываем config/web.php и добавляем в components:
'components' => [ 'urlManager' => [ 'class' => 'yii\web\UrlManager', // Disable index.php 'showScriptName' => false, // Disable r= routes 'enablePrettyUrl' => true, 'rules' => [ '//page-' => '/', '/' => '/', ], //Далее какой-то код. ],
Код рабочий, если возникнут какие-то проблемы, выложите config/web.php и мы поможем.

среда, 27 февраля 2019 г.

Возможно ли создание ЧПУ?

Возможно ли создание ЧПУ на пхп(связь с БД) без внесения изменении в htaccess? Есть примеры?


Ответ

Вообще без .htaccess практически не возможно. Исключение - вы сконфигурируете свой сервер соответствующим способом. Хотя не думаю, что это легкий выход из положения. А вот избежать лишней головной боли с mod_rewrite можно. Я уже говорил тут об этом, но не могу найти этот пост, поэтому вкратце повторюсь. Создается правило, с помощью которого все запросы перенаправляются на морду, если директории или файла не существует физически на сервере. Например, так: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L] Теперь, вы ловите такие запросы в php: $request = $_SERVER['REQUEST_URI']; Разбираете полученную строку "на запчасти": по слешу для определения основных частей URI, учитывая окончание, если допустим адрес может быть /some_path/page.html и в зависимости от полученных данных, выводите ту или иную информацию.