urlManager 规则不适用于 Yii2 模块

urlManager rules not working on modules Yii2

我正在尝试在 Yii 2 中制定一些 url 规则,这样我就可以像这样从控制器访问一个动作:

controller/action/1 -> controller/action (with a parameter)

我尝试了一些规则,但它们在我的模块中不起作用 (www.example.com/midend, www.example.com/backend).

所以,如果我想访问 www.example.com/controller/action/1 它工作得很好,但如果我想访问 www.example.com/midend/controller/action/1 它 return 404.

这些是模块的规则:

'<module:\w+>/<controller:\w+>/<action:\w+>/<id:\w+>' => '<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>/<id:\w+>' => '<module>/<controller>',

这些是没有模块的规则:

'<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<controller:\w+>/<id:\w+>' => '<controller>',

我已经尝试用 midend 替换 <module:\w+>

假设你的 id 是整数,你应该简单地用这个替换你的规则:

'<controller>/<action>/<id:\d+>' => '<controller>/<action>',

它将适用于:

  • www.example.com/controller
  • www.example.com/controller/动作
  • www.example.com/controller/动作/1
  • www.example.com/module(假设您有默认控制器)
  • www.example.com/module/控制器
  • www.example.com/module/控制器/动作
  • www.example.com/module/控制器/动作/1