Правила Yii2 в разделе маршрутизации - PullRequest
0 голосов
/ 05 декабря 2018

Я новичок в 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 (win) .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: при попытке использовать правило маршрутизации:

enter image description here и когда я использую URL, которого нет в массиве правил: enter image description here

1 Ответ

0 голосов
/ 05 декабря 2018

Измените правила переписывания.

Переместите строку

RewriteRule ^index.php/ - [L,R=404]

, чтобы стать первой после RewriteEngine on.

или add "последний "флаг ([L]):

RewriteRule . index.php [L]

Без этих правил обработка продолжается до следующего.

...