如果未找到<controller> / <action>,Yii2将跳至其他URL路由

时间:2016-01-14 16:50:10

标签: yii2 yii2-advanced-app

我有一个控制器动作的自定义URL路由,即:

['pattern'=>'<username>/<post_slug>', 'route'=>'post/view'],

输入localhost/thisismyname/my-user-post之类的内容会根据需要使用post/viewusername参数调用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管理器的操作,因为两者都是丑陋的解决方法。

1 个答案:

答案 0 :(得分:1)

您指定的规则非常不明确,因此几乎所有路线都匹配。

您可以写一个urlRule class并检查路线是否为<username>/<post_slug>路线。

作为另一种解决方案,您可以将此规则放在urlManager的规则配置数组的最后。