首页 文章

如何正确指定在yii2中找不到标准的路由时执行的路由?

提问于
浏览
0

假设我们有一个随机seo友好网址的页面,如/some/page.html如何在配置中描述urlManager的规则,指定条件,如果标准rote(例如带有actionPage的SomeController)没有退出而不执行指定的默认路由(例如DefaultController / actionDefault)?

此规则将覆盖默认路由,并将所有请求转发到指定的路由

'urlManager' => [
        ...
        'suffix' => '.html',
        'rules'=>[
            '<alias:[0-9a-zA-Z-_/]+>' => 'default/default',
        ]
]

换句话说,算法应该如下:

  • 检查解析的URL是否与现有的模块/控制器/操作匹配,然后处理这个

  • Otherwice通过config中预定义的路由处理请求

2 回答

  • 0

    这是urlManager上的一本好手册:guide yii2

    你还必须在服务器上更改.htaccess以获取mod_rewrite(Apache或Nginx)=> guide yii2

  • 0

    我猜这笔交易不在路由中 . 我的问题是通过使用覆盖parseUrl方法扩展urlManager类来解决的,该方法检查DB中是否存在其url的每个请求 . 如果不存在则返回父方法结果 . 感谢您尝试帮助:)

    附:但是如果这个url与标准路由方案一致,那么就覆盖这个url .

相关问题