ЧПУ адреса в Yii2
Прислано GMan1990 January 08 2017 07:42:44

Краткая заметка на тему "Как в Yii2 basic убрать web/ из url при помощи .htaccess и правил urlManager'а?"

Создать .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

в папке web в создать .htaccess:

RewriteEngine On RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php
 

В конфиге web.php указываем это

'urlManager' => [
 'enablePrettyUrl' => true,
 'showScriptName' => false,
 'enableStrictParsing' => false,
 'suffix'=>'.html',
 'rules' => [
'<action:(about|contact|login)>' => 'site/<action>',
 ],
],

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

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

Поскольку я работаю с локальным сервером OpenServer, в настройках → на вкладке Модули → в блоке HTTP была связка Apache и Nginx. Оставляйте только Apache и проблема решится.