В этой статье я расскажу как убрать из адреса Web, в многими любимом Yii 2 basic PHP Framework. Вы только загрузили yii2 на свой сайт, но вместо нормального url адреса в адресной строке (domen/web) и по какой бы вы ссылке не перешли эта часть url остается неизменной.
Как в Yii 2 убрать web из url используя .htaccess и правила urlManager’а
В интернете множество примеров решения данного вопроса, но я расскажу Вам способ который я применил для решения этой проблемы, так как остальные попросту не работали.
- В папке config находящейся в корне (/domen/public_html/config) открываем файл web.php
Ищем следующий код и убираем символы /*код*/, тем самым код становится активным.
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ],
2) В этом же файле находим request и добавляем
'baseUrl'=> '',
Вот что должно получиться:
'request' => [ // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 'cookieValidationKey' => '', 'baseUrl'=> '', ],
3) Создаем файл .htaccess и кладем его в папку Web
Внутри файла размещаем следующий код:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
4) Создаем еще один файл .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, а благодаря urlManager’а url адреса будут симпатичнее.