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>'