Yii 2 обладает одной неприятной особенностью. После установки сайт открывается не по корневому адресу, а в директории web из-за чего слово «web» постоянно присутствует во всех URL на сайте, что создаёт неудобство.
В этой статье мы рассмотрим, какие требуются настройки, чтобы удалить слово «web» из адресов страниц.
Настройка .htaccess
Первое, что нам понадобится, это два файла .htaccess.
Первый файл размещаем в корневом каталоге web приложения. Его содержимое:
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. Его содержимое:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
Далее необходимо настроить непосредственно сам Yii 2.
Настройка самого фреймворка
Для завершения настроек нам нужно открыть файл web.php в папке config. Найти в нём раздел components, а в нём в свою очередь раздел request.
В разделе request есть параметр baseUrl. Ему нужно установить в качестве значения пустую строку, как это показано ниже.
'components' => [ . . . 'request' => [ . . . 'baseUrl' => '' ], . . .
Если всё сделано правильно слово «web» должно исчезнуть из адресов всех страниц.