maxxtweek
@maxxtweek
Начинающий бекэнд разработчик

Как правильно настроить ЧПУ в Yii 2?

Всем доброго времени суток.
Недавно начал изучать фраемворк Yii2.
Пытаюсь настроить ЧПУ на Yii 2.Делал все по гуглу.
Но выдает ошибку.

В config/web.php
'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'enableStrictParsing' => false,
            'rules' => [

            ],
        ],

Создал в корневой папке .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 создал .htaccess
RewriteEngine On RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php

Но при обращение по ссылке localhost/test/my/index.php Выдает ошибку.
971260b6b7694ef0bd03fe731139a5a7.png
Сама структура папок:
e7813c2bf04e4dfd9c5999aa041844bf.png
Пока не настраивал ЧПУ все работало со стандартным GET запросом Yii
localhost/test/web/index.php?r=my/index.php
Всем заранее благодарю за ответы.
  • Вопрос задан
  • 771 просмотр
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Доброй ночи.
В правилах urlManaget для адреса localhost/test укажите следующее:
'rules' => [
     '' => 'my/index'
 ],

при этом, при переходе по ссылке localhost/test Вы будете попадать на действие actionIndex() котролера MyController
Для того, чтобы убрать web из адреса Вам надо в корень сайта положить .htaccess следующего содержания:
<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine on
</IfModule>

<IfModule mod_rewrite.c>
   RewriteCond %{REQUEST_URI} ^/.*
   RewriteRule ^(.*)$ web/$1 [L]

   RewriteCond %{REQUEST_URI} !^/web/
   RewriteCond %{REQUEST_FILENAME} !-f [OR]
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^.*$ web/index.php

</IfModule>

В web .htaccess с таким содержимым
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы