.htaccess yii2 urlManager enablePrettyUrl不工作

.htaccess yii2 urlManager enablePrettyUrl不工作,.htaccess,yii2,yii-url-manager,.htaccess,Yii2,Yii Url Manager,在Yii2中,我无法启用漂亮的url 我的配置: 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, ], 我的.htaccess: RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-

在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
  • 我不相信我的.htaccess有任何问题

您得到了漂亮的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',
    ]

改变它以适应你的需要。无需更改控制器中的任何内容,它仍将接收t和c参数。

您已经获得了漂亮的URL

/book/read?t=booktitle&c=chaptertitle
这是一个很好的url。你也可以这样打它

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

若你们想在浏览器中使用它,那个么若你们把自己和URL中的
搞混了,那个么结果也是一样的。

噢,谢谢。所以,这只是一个关于漂亮url的误解!事实上,我正在寻找
/book/read/bookstitle/chaptertTitle
。Yii 1.1和Yii 2之间是否发生了变化?不是真的,我相信它们的工作方式是相同的。根据我的记忆,你仍然需要为它们定义URL规则。我的错。谢谢你的帮助。你怎么能打成那样?它在yii1(urlFormat=path)中是这样工作的,而我不认为仅在yii2中就可以这样工作
/book/read?t=booktitle&c=chaptertitle
/book/read/t/booktitle/c/chaptertitle