yii2 urlManager enablePrettyUrl не работает

В Yii2 я не могу включить красивые URL.

Мой конфиг:

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

Мой.htaccess:

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

Мой сценарий:

echo 'enablePrettyUrl: ';
echo Yii::$app->urlManager->enablePrettyUrl ? 'true ' : 'false';

echo '<br>';
echo 'enableStrictParsing: ';
echo Yii::$app->urlManager->enableStrictParsing ? 'true ' : 'false';

echo '<br>';
echo 'showScriptName: ';
echo Yii::$app->urlManager->showScriptName ? 'true ' : 'false';

echo Url::to(['/book/read', 't' => 'booktitle', 'c'=>'chaptertitle']);

Выход из скрипта:

enablePrettyUrl: true
enableStrictParsing: false
showScriptName: false

/book/read?t=booktitle&c=chaptertitle

Ясно, что я не получаю симпатичных урлов. Почему бы и нет?

  • Мы знаем enablePrettyUrl=== true
  • Я не верю, что что-то не так с моим.htaccess

2 ответа

Решение

Вы получаете красивые URL. Это красивый URL

/book/read?t=booktitle&c=chaptertitle

Уродливый URL

index.php?r=book/read&t=booktitle&c=chaptertitle

Так что все работает, как и ожидалось в yii2. Теперь вы можете сделать их еще красивее, в этом случае вы можете добавить в свой раздел правил что-то вроде

'urlManager' => [
    'class' => 'yii\web\UrlManager',
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        'book/read/<t>/<c>' => 'book/read',
    ]

Это создаст ссылку, которая будет выглядеть как

book/read/booktitle/chaptertitle

Измените его в соответствии с вашими потребностями. Не нужно ничего менять в контроллере, он все равно получит параметры t и c.

Вы уже получаете красивый URL

/book/read?t=booktitle&c=chaptertitle

это красивый URL Вы также можете ударить это так

/book/read/t/booktitle/c/chaptertitle

если вы хотите в браузере, это приведет к тому же, если вы путаете себя с ? в URL.

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