取消注释后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
答案 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>',
),
],