Вопрос: Как я могу включить ЧПУ в Yii2. Я хочу убрать index.php и ? из переметров адреса. Какую часть нужно отредактировать в Yii2 для этого?
Ответ:
Я сделал это в Yii2. Включите mod_rewrite для Apache ( примечание: почти на любом хостинге этот модуль включен по умолчанию ). Для Yii2 установленному в basic сделайте следующее.
Создайте файл .htaccess в папке web ( она содается при первоначачальной установке Yii2 ) и в этот htaccess добавьте следующее:
1 2 3 4 5 6 7 |
RewriteEngine on # Если директория или файл созданы, то не использовать правила # а обращаться к файлу напрямую # для картинок например RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php |
И в файле web.php в ваших настройках Yii2 добавьте ( или отредактируйте ) в разделе components, чтобы было так:
1 2 3 4 5 6 7 8 9 10 11 12 |
'urlManager' => [ 'class' => 'yii\web\UrlManager', // Убираем index.php 'showScriptName' => false, // Убираем r= routes 'enablePrettyUrl' => true, 'rules' => array( '<controller:\w+>/<id:\d+>' => '<controller>/view', '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', '<controller:\w+>/<action:\w+>' => '<controller>/<action>', ), ], |
В случае если Yii2 был установлен в advanced шаблоне создавайте .htaccess в папке backend/web и frontend/web, а urlManager добавляйте в файл common/config/main.php
Нюансы:
- приведенный вариант ЧПУ для Yii2 работает только для Apache
- в настройках Apache должны быть разрешены .htaccess ( смотрите директиву в настройках домена должно быть AllowOverride All )
Это перевод и компиляция источник здесь.