Yii2 убрать web

В этой статье я расскажу как убрать из адреса Web, в многими любимом Yii 2 basic PHP Framework. Вы только загрузили yii2  на свой сайт, но вместо нормального url адреса в адресной строке (domen/web) и по какой бы вы ссылке не перешли эта часть url остается неизменной.

Как в Yii 2 убрать web из url используя .htaccess и правила urlManager’а

В интернете множество примеров решения данного вопроса, но я расскажу Вам способ который я применил для решения этой проблемы, так как остальные попросту не работали.

  1. В папке 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 адреса будут симпатичнее.