ЧПУ адреса в Yii2

ЧПУ-адреса в Yii2

Краткая заметка на тему: «Как в Yii2 basic убрать web/ из URL с помощью .htaccess и правил urlManager

1) Создайте файл .htaccess в корне сайта со следующим содержимым:

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/(web)

RewriteRule ^assets/(.*)$ /web/assets/$1 [L]
RewriteRule ^css/(.*)$ web/css/$1 [L]
RewriteRule ^js/(.*)$ web/js/$1 [L]
RewriteRule ^images/(.*)$ web/images/$1 [L]

RewriteRule (.*) /web/$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /web/index.php

2) В папке web создайте файл .htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

3) В конфиге web.php указываем настройки urlManager:

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'enableStrictParsing' => false,
    'suffix' => '.html',
    'rules' => [
        '<action:>' => 'site/<action>',
    ],
],

4) Там же, в конфиге web.php, в секции request добавляем строку:
'baseUrl' => '',

После выполнения всех шагов может возникнуть проблема с отображением стилей и скриптов, а именно после добавления 'baseUrl' => ''.

Если используется локальный сервер OpenServer, проверьте его настройки: в разделе «Модули» → блок HTTP должна быть включена только связка Apache. При одновременном использовании Apache + Nginx возможны конфликты с обработкой ЧПУ-адресов.