Пошаговая инструкция
Шаг 1
В корень проекта добавляем .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
Шаг 2
В папку /web добавляем файл .htaccess со следующим содержанием:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
Шаг 3
В файле /config/web.php в элемент components массива добавляем:
'request' => [ // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 'cookieValidationKey' => 'yYy4YYYX8lYyYyQOl8vOcO6ROo7i8twO', 'baseUrl' => '' ], //... 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '' => 'site/index', '<controller:\w+>/<action:\w+>/' => '<controller>/<action>', ], ],
Все, готово)
Возможные ошибки
Если у вас возникла ошибка:
Invalid Configuration – yii\base\InvalidConfigException
yii\web\Request::cookieValidationKey must be configured with a secret key.
То для решения этой проблеммы вы можете установить флаг enableCookieValidation в false, в /config/web.php ($config['components']['request']):
'request' => [ 'enableCookieValidation' => false, 'baseUrl' => '' ],
Комментарии
Респект и уважуха. Заработало, Спасибо, дружище.
ОтветитьВы бы упомянули, что это костыль, а нормальное решение состоит в переносе DocumentRoot в конфигах сервера из корня проекта в папку web. Иначе стоит слететь .htaccess, или конфигам апача выше (отключение overrideAll), или при переходе на nginx - и все внутренности вашего приложения уйдут в открытый доступ.
ОтветитьЯ в хостинге поменял корневой путь. Все работает.
ОтветитьПосле того, как просто расскоментировал 'urlManager' на всех страницах стала 404.
Ответить