假设我们有一个随机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 回答
这是urlManager上的一本好手册:guide yii2
你还必须在服务器上更改.htaccess以获取mod_rewrite(Apache或Nginx)=> guide yii2
我猜这笔交易不在路由中 . 我的问题是通过使用覆盖parseUrl方法扩展urlManager类来解决的,该方法检查DB中是否存在其url的每个请求 . 如果不存在则返回父方法结果 . 感谢您尝试帮助:)
附:但是如果这个url与标准路由方案一致,那么就覆盖这个url .