У меня есть как контроллеры так и модули на одном уровне. В каждом модуле будет DefaultController.
Index экшены просто оставляют id контроллера, а если он в модуле и принадлежит DefaultController, так вообще id модуля. Для экшена view тоже отсекается его id и остается только <id контроллера>/<id>
Набросал вот таких правил. По моей логике должно было работать
Код: Выделить всё
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<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+>/<controller:\w+>' => '<module>/<controller>/index',
'<module:\w+>/<controller:\w+>/<id:\d+>' => '<module>/<controller>/view',
'<module:\w+>/<controller:\w+>/edit/<id:\d+>' => '<module>/<controller>/edit',
'<module:\w+>/<controller:\w+>/delete/<id:\d+>' => '<module>/<controller>/delete',
'<module:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>' => '<module>/<controller>/<action>',
'<controller:\w+>' => '<controller>/index',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/edit/<id:\d+>' => '<controller>/edit',
'<controller:\w+>/delete/<id:\d+>' => '<controller>/delete',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
]
],