取消注释enablePrettyUrl YII2后接收404

时间:2016-11-30 18:34:31

标签: php yii yii2 yii-url-manager

取消注释后enablePrettyUrl得到404错误

例如:

在此服务器上找不到请求的网址/网站/索引。

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 个答案:

答案 0 :(得分:0)

(Yii2)URL管理器支持两种URL格式:

默认的网址格式; 漂亮的URL格式。

默认情况下' enablePrettyUrl'设置为false表示网址格式为

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

如果您取消注释' enablePrettyUrl' =>真,

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

启用prettyUrl的格式,如:

/index.php/post/100

就像您很容易看到两种格式不同所以基于格式的explict调用会返回404错误..当您更改urlManager格式启用或禁用漂亮的URL时..

你可以使用urlHelper

调用url来避免这个问题
 use yii\helpers\Url;
 echo Url::to(['post/view', 'id' => 100]);

使用此帮助程序Yii2根据使用中的漂亮URL启用状态

创建正确的URL

您可以在http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html

找到有关yii2路由的简要指南

答案 1 :(得分:0)

在./web文件夹中添加.htaccess文件后(如果使用基本模板),您必须在web.php配置文件的urlManager部分添加一些规则...见下文

'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>',
            ),
        ],