Qudrat Qodirov

Настройка ЧПУ в Yii2

Думаю, никому уже не нужно объяснять, что такое ЧПУ. Фактически красивые адреса (ЧПУ) уже стали стандартом в веб-разработке и уже сложно отыскать сайт в сети, который бы использовал адреса с явными GET параметрами. Практически все сайты сейчас могут похвастать красивыми адресами.

Фреймворк Yii2 из коробки не имеет настроенных ЧПУ, но исправить это крайне легко. Как вы помните, по умолчанию сразу после установки фреймворка для доступа к главной странице нам необходимо обратиться к папке web, в которой и лежит публичная часть Yii приложения. Т.е. для доступа к главной странице мы должны были набрать адрес http://yii2/web/.

От папки web мы смогли легко избавиться с помощью файлов .htaccess.

Для «basic»

Создаем два файла .htaccess: один файл в директории «web», другой в корне сайта.

В файле, созданном в папке «web», помещаем следующее:

Здесь все просто, если запрос не является папкой или файлом, тогда запрос перенаправляется на index.php.

В корневом .htaccess необходимо отправлять все запросы в папку «web», тут можно использовать два варианта. Первый короткий:

Такое перенаправление отлично работает на чистом Apache, а вот на хостингах, использующих связку Apache + Nginx, могут возникнуть проблемы, поэтому я рекомендую всегда использовать более развернутое правило перенаправления.

Для «advanced»

Создаем три файла .htaccess: первый в корне, второй в «frontend/web», третий в «backend/web».

В файлы, находящиеся в «backend/web» и «frontend/web», помещаем одинаковое уже знакомое правило:

В корневой .htaccess помещаем следующий код:

Принцип такой же, как и для «basic», просто отдельно прописываем правила для «frontend» и «backend», а все запросы на публичные файлы отправляем на «frontend».

Настройка ЧПУ в Yii2 приложениях

Из коробки в фреймворке ЧПУ выключены, чтобы их включить для «basic» необходимо открыть файл web.php, который находится в папке «config», в массиве «components» находим вложенный массив «request» и вставляем следующую настройку:

Должно получиться так, как показано на скриншоте ниже.

Вставляем пустой baseUrl в массив request

В том же массиве «components» находим и рас комментируем следующий код:

Если данный код отсутствует, то просто вставляем его в массив «components» и сохраняем файл.

Для «advanced» нужно проделать тоже самое в файле main.php, который находится в папке «frontend/config», а в main.php, папки «backend/config», нужно еще изменить  baseUrl:

 

 

 

Обсуждение закрыто.