问题描述
我尝试为模块和控制器使用路由
'<controller>'=>'<controller>/index','<controller>/<id:\d+>'=>'<controller>/view','<controller>/<action>'=>'<controller>/<action>','<module>' => '<module>/default/index','<module>/<id:\d+>' => '<module>/default/view','<module>/edit/<id:\d+>' => '<module>/default/edit','<module>/delete/<id:\d+>' => '<module>/default/delete','<module>/<action>' => '<module>/default/<action>','<module>/<controller>' => '<module>/<controller>/index','<module>/<controller>/edit/<id:\d+>' => '<module>/<controller>/edit','<module>/<controller>/delete/<id:\d+>' => '<module>/<controller>/delete','<module>/<controller>/<id:\d+>' => '<module>/<controller>/view','<module>/<controller>/<action>' => '<module>/<controller>/<action>',
但是由于某种原因,如果第一个匹配规则不起作用,那么其余的都不会检查,您会收到 404 错误。 例如,如果没有找到控制器,则得到404,检查未到达模块。
网址管理器配置
'urlManager' => [
'enablePrettyUrl' => true,'showScriptName' => false,'rules' => [
'store/upload'=>'store/upload','stores'=>'store/index',// 'post/<id:\d+>'=>'post/view','comment/send'=>'comment/send',['class' => 'yii\rest\UrlRule','controller' => 'Api','prefix' => 'api'],'api/<id:\d+>'=>'api/view',[
'pattern' => 'users','route' => 'users/index','suffix' => '/','normalizer' => false,// отключаем нормализатор для этого правила
],// '<controller>'=>'<controller>/index',// '<controller>/<id:\d+>'=>'<controller>/view',// '<controller>/<action>'=>'<controller>/<action>',],
请求网址 http://yii2/post 到 PostController/actionIndex()
解决方法
我修复了路由,它起作用了。首先检查控制器,然后检查模块。
'<controller:\w+>'=>'<controller>/index','<controller:\w+>/<id:\d+>'=>'<controller>/view','<controller:\w+>/<action>'=>'<controller>/<action>','<module:\w+>' => '<module>/default/index','<module:\w+>/<id:\d+>' => '<module>/default/view','<module:\w+>/edit/<id:\d+>' => '<module>/default/edit','<module:\w+>/delete/<id:\d+>' => '<module>/default/delete','<module:\w+>/<action:\w+>' => '<module>/default/<action>','<module:\w+>/<controller:\w+>' => '<module>/<controller>/index','<module:\w+>/<controller:\w+>/edit/<id:\d+>' => '<module>/<controller>/edit','<module:\w+>/<controller:\w+>/delete/<id:\d+>' => '<module>/<controller>/delete','<module:\w+>/<controller:\w+>/<id:\d+>' => '<module>/<controller>/view','<module:\w+>/<controller:\w+>/<action>' => '<module>/<controller>/<action>',