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.