Yii2 如果找不到 <controller>/<action> 则跳到其他 URL 路由

Yii2 skip to other URL route if <controller>/<action> is not found

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

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

输入类似 localhost/thisismyname/my-user-post 的内容会按预期使用 usernamepost_slug 参数调用 post/view

这条路线的问题是我的所有其他控制器操作都不再有效。 localhost/post/index 将使用参数 post 作为 usernameindex 作为 post_slug 调用 post/view

有没有一种有效的方法可以优先考虑 <controller>/</action> URLs,如果没有说 <controller>/<action> 它会将参数作为 <username>/<post_slug> 传递给 post/view URL 路线?

我不想创建像 site/<controller>/<action> 这样的单独路由,也不想手动将每个控制器和操作作为路由添加到 URL 管理器中,因为这两种方法都很丑陋。

您指定的规则非常模糊,所以几乎所有路由都匹配它。

你可以写一个urlRule class然后检查一下,是不是路由<username>/<post_slug>路由

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