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
的内容会按预期使用 username
和 post_slug
参数调用 post/view
。
这条路线的问题是我的所有其他控制器操作都不再有效。 localhost/post/index
将使用参数 post
作为 username
和 index
作为 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 的规则配置数组的最后。
我有一个用于控制器操作的自定义 URL 路由,即:
['pattern'=>'<username>/<post_slug>', 'route'=>'post/view'],
输入类似 localhost/thisismyname/my-user-post
的内容会按预期使用 username
和 post_slug
参数调用 post/view
。
这条路线的问题是我的所有其他控制器操作都不再有效。 localhost/post/index
将使用参数 post
作为 username
和 index
作为 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 的规则配置数组的最后。