Убираем «web» из адреса в Yii 2

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» должно исчезнуть из адресов всех страниц.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *