Человеко-понятные ссылки в Yii 2.x

Из коробки ссылки создаются в get-формате. Они необходимы для того, чтобы при виде одного лишь адреса они уже примерно понимали, о чем на этой странице написано. Это позволит наиболее качественно проиндексировать страницы Вашего сайта. И соответственно, лучше выдавать Ваш сайт в результатах поисковой выдачи. Рассмотрим на примере не хитрых манипуляций включение чпу в Yii 2.x 

Для базового приложения:

Добавляем .htaccess в директорию web и вставляем туда следующий код

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# if request dosn't start with web add it
RewriteCond %{REQUEST_URI} !^/(web)
RewriteRule (.*) /web/$1

# if file or directory dosn't exists go to /web/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /web/index.php

Для расширенного приложения:

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# if request begins with /admin remove admin and ad /backend/web/
RewriteCond %{REQUEST_URI} ^/admin
RewriteRule ^admin\/?(.*) /backend/web/$1

# other requests add /frontend/web/$1
RewriteCond %{REQUEST_URI} !^/(frontend/web|backend/web|admin)
RewriteRule (.*) /frontend/web/$1

# if frontend request
RewriteCond %{REQUEST_URI} ^/frontend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /frontend/web/index.php

# if backend request
RewriteCond %{REQUEST_URI} ^/backend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /backend/web/index.php

Следующий шаг это добавление Url менеджера в config\web.php, для расширенной версии фреймворка это common\config\main.php

'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
]
],

Итак в итоге мы получаем рабочие ЧПУ ссылки!