yii2 urlmanager 规则冲突
yii2 urlmanager rules conflict
我在 Yii2 框架中为 url 管理器使用以下代码:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<module:\w+>/<action:\w+>' => '<module>/default/<action>'
]
],
但是。当为模块启用从 url 中删除默认值的规则时,控制器的规则停止工作。
我的代码哪里出了问题?
谢谢。
问题是 - 您的模块规则覆盖了控制器一。
<module>
和 <controller>
不是 UrlManager 的关键字,因此 - 在您的情况下它不起作用。
您的 Url-config 应该是这样的:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<module:\w+>/<controller:\w+><action:\w+>' => '<module>/default/<action>'
]
],
它将随时使用 default
控制器。你真的想要吗?
最好只使用 '<module:\w+>/<controller:\w+><action:\w+>' => '<module>/<controller>/<action>'
我在 Yii2 框架中为 url 管理器使用以下代码:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<module:\w+>/<action:\w+>' => '<module>/default/<action>'
]
],
但是。当为模块启用从 url 中删除默认值的规则时,控制器的规则停止工作。
我的代码哪里出了问题?
谢谢。
问题是 - 您的模块规则覆盖了控制器一。
<module>
和 <controller>
不是 UrlManager 的关键字,因此 - 在您的情况下它不起作用。
您的 Url-config 应该是这样的:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<module:\w+>/<controller:\w+><action:\w+>' => '<module>/default/<action>'
]
],
它将随时使用 default
控制器。你真的想要吗?
最好只使用 '<module:\w+>/<controller:\w+><action:\w+>' => '<module>/<controller>/<action>'