Правила Yii2 в разделе маршрутизации
Я новичок в Yii2 и в настоящее время получаю сообщение об ошибке при настройке приложения. Я пытаюсь использовать дружественный URL.
Согласно DOCS
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
//... rules ...
]
]
Я установил этот раздел в своем приложении как:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'/' => 'site/index',
'/entry' => 'site/entry',
'defaultRoute' => 'main/index'
]
]
Это работало нормально, когда я пытаюсь открыть URL http://yii2/entry.
Если я установил как:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'/' => 'site/index',
'/entry' => 'site/entry',
'defaultRoute' => 'main/index'
]
]
Если я пытаюсь открыть URL http://yii2/site/entry, я получаю сообщение об ошибке 404
,
Также, если я установлю:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'/' => 'site/index',
'<controller>/<action>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'defaultRoute' => 'main/index'
]
]
Если я пытаюсь открыть URL-адрес http://yii2/site/entry, я тоже получаю сообщение об ошибке 404.
Почему это происходит? Где я могу прочитать подробнее о маршрутизации в yii2? Где моя ошибка?
UPD: Apache2.2 (победа) .htaccess содержит:
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
# if $showScriptName is false in UrlManager, do not allow accessing URLs with script name
RewriteRule ^index.php/ - [L,R=404]
UPD2: я получаю 2 варианта ошибки 404: при попытке использовать правило маршрутизации:
1 ответ
Измените свои правила переписывания.
Переместить линию
RewriteRule ^index.php/ - [L,R=404]
быть первым после RewriteEngine on
,
Или добавить "последний" флаг ([L]
) к:
RewriteRule . index.php [L]
Без этих правил обработка продолжается до следующего.