Получи 404 после раскомментирования enablePrettyUrl YII2

После раскомментирования enablePrettyUrl получаю ошибку 404

Например:

Запрашиваемый URL / сайт / индекс не найден на этом сервере.

Сервер Apache/2.4.7 (Ubuntu) на порт yiibasic.com 80

Когда я снова это комментирую, все работает

'components' => [
    'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
        ],
    ],
]

Не могу понять, в чем проблема.
.htaccess:

RewriteEngine on

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

RewriteRule . index.php

2 ответа

После добавления файла.htaccess в вашу папку./web (если используется базовый шаблон), вы должны добавить некоторые правила в раздел urlManager вашего файла конфигурации web.php... см. Ниже

'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'enableStrictParsing' => false,
            'rules' => array(
                '<controller:\w+>/<id:\d+>' => '<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            ),
        ],

Менеджер URL (Yii2) поддерживает два формата URL:

формат URL по умолчанию; красивый формат URL.

По умолчанию для enablePrettyUrl установлено значение false, это означает, что URL-адрес имеет формат

your/index.php?r=post%2Fview&id=100

Если вы раскомментируете 'enablePrettyUrl' => true,

 'components' => [
  'urlManager' => [
    //'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
    ],
  ],
]

Вы включаете формат для prettyUrl, например:

/index.php/post/100

как вы легко видите, эти два формата различаются, поэтому явный вызов, основанный на формате, возвращает ошибку 404... при изменении формата urlManager, включающего или отключающего симпатичный URL-адрес..

Вы можете позвонить по URL, избегая этой проблемы, используя urlHelper

 use yii\helpers\Url;
 echo Url::to(['post/view', 'id' => 100]);

с этим помощником Yii2 создайте правильный URL в соответствии с используемым состоянием включения симпатичного URL

Краткое руководство по маршрутизации yii2 можно найти здесь http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html

Другие вопросы по тегам