yii2 - 路由部分的 Yii2 规则
问题描述
我是 Yii2 的新手,目前在设置应用程序时收到错误消息。我尝试使用友好的 URL。
根据DOCS
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
//... rules ...
]
]
我在我的应用程序中将此部分设置为:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'/' => 'site/index',
'/entry' => 'site/entry',
'defaultRoute' => 'main/index'
]
]
当我尝试打开 URL http://yii2/entry时,这很好用。
如果我设置为:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'/' => 'site/index',
'/entry' => 'site/entry',
'defaultRoute' => 'main/index'
]
]
如果我尝试打开 URL http://yii2/site/entry我收到错误404
。
另外,如果我设置:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'/' => 'site/index',
'<controller>/<action>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'defaultRoute' => 'main/index'
]
]
如果我尝试打开 url http://yii2/site/entry我也收到错误 404。
为什么会这样?在哪里可以阅读有关 yii2 中路由的更多详细信息?我的错误在哪里?
UPD:Apache2.2(win).htaccess 包含:
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
# if $showScriptName is false in UrlManager, do not allow accessing URLs with script name
RewriteRule ^index.php/ - [L,R=404]
UPD2:我收到 404 错误的 2 个变体:尝试使用路由规则时:
解决方案
修改你的重写规则。
移动线
RewriteRule ^index.php/ - [L,R=404]
成为之后的第一个RewriteEngine on
。
或将“最后一个”标志 ( [L]
) 添加到:
RewriteRule . index.php [L]
如果没有此规则,处理将继续到下一个。
推荐阅读
- c++ - 一种在 C++ 中将类数据存储到文件的有效方法
- registry - 触发 RunOnce 或排除故障
- python - 模块“django.urls”中没有名称“路径”
- javascript - React 测试抛出警告'无效的 DOM 属性`%s`。你的意思是 `%s`?%s'
- java - 如何在java中减去hashmap数据
- reporting-services - SQL Server 2017 配置管理器缺少报告服务服务
- java - 为什么deriveFont(float size) 不改变JButton 中的字体大小?
- java - Maven:无效的目标版本:12,但 JAVA_HOME 设置为 12
- javascript - 如何获取使用 jQuery 单击的提交按钮的自定义 ID?
- visual-studio-code - 是否可以基于特定目录而不是文件扩展名创建语言标识符(用于语法突出显示)?