yii2 urlManager enablePrettyUrl 不工作
yii2 urlManager enablePrettyUrl not working
在 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 没有任何问题
你变得漂亮 URLs。这个漂亮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',
]
这会生成一个 link 看起来像
book/read/booktitle/chaptertitle
根据您的需要进行更改。无需在控制器中更改任何内容,它仍会接收 t 和 c 参数。
你已经变漂亮了URL
/book/read?t=booktitle&c=chaptertitle
很漂亮url。你也可以这样打
/book/read/t/booktitle/c/chaptertitle
如果你想在浏览器中得到相同的结果,如果你在 URL 中混淆了 ?
。
在 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 没有任何问题
你变得漂亮 URLs。这个漂亮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',
]
这会生成一个 link 看起来像
book/read/booktitle/chaptertitle
根据您的需要进行更改。无需在控制器中更改任何内容,它仍会接收 t 和 c 参数。
你已经变漂亮了URL
/book/read?t=booktitle&c=chaptertitle
很漂亮url。你也可以这样打
/book/read/t/booktitle/c/chaptertitle
如果你想在浏览器中得到相同的结果,如果你在 URL 中混淆了 ?
。