我有一个控制器动作的自定义URL路由,即:
['pattern'=>'<username>/<post_slug>', 'route'=>'post/view'],
输入localhost/thisismyname/my-user-post
之类的内容会根据需要使用post/view
和username
参数调用post_slug
。
此路由的问题是我的所有其他控制器操作都不再有效。 localhost/post/index
会将参数post/view
称为post
,将username
称为index
,将post_slug
称为<controller>/</action>
。
是否有一种优先考虑<controller>/<action>
网址的有效方式,如果没有说<username>/<post_slug>
,它会将参数post/view
传递给site/<controller>/<action>
网址?
我不想创建像{{1}}这样的单独路线,也不想手动添加每个控制器和放大器。作为路径进入URL管理器的操作,因为两者都是丑陋的解决方法。
答案 0 :(得分:1)
您指定的规则非常不明确,因此几乎所有路线都匹配。
您可以写一个urlRule class并检查路线是否为<username>/<post_slug>
路线。
作为另一种解决方案,您可以将此规则放在urlManager的规则配置数组的最后。