如何正确指定在 yii2 中找不到标准路由时执行的路由?
How to correctly specify route that performs when standard one does not found in yii2?
假设我们有一个随机 seo 友好的页面 url,例如 /some/page。html
如何在配置中描述 urlManager 的规则,该规则指定条件,如果标准死记硬背(例如带有 actionPage 的 SomeController)不执行指定的默认路由(例如 DefaultController / actionDefault)?
此规则覆盖默认路由并将所有请求转发到我指定的路由
'urlManager' => [
...
'suffix' => '.html',
'rules'=>[
'<alias:[0-9a-zA-Z-_/]+>' => 'default/default',
]
]
换句话说,算法应该如下:
- 检查解析的 url 是否与现有的 module/controller/action 匹配,然后处理这个
- 否则通过配置中预定义的路由处理请求
这是一本关于 urlManager 的好手册:guide yii2
您还必须为 mod_rewrite(Apache 或 Nginx)更改服务器上的 .htaccess => guide yii2
我猜交易不在路由中。我的问题已通过使用覆盖 parseUrl 方法的扩展 urlManager class 解决,该方法检查每个请求是否存在其 url 在数据库中。如果不存在,则 returns 父方法结果。感谢您尝试提供帮助:)
P.S。但是,如果此 url 与标准路由方案一致,则覆盖此方案。
假设我们有一个随机 seo 友好的页面 url,例如 /some/page。html 如何在配置中描述 urlManager 的规则,该规则指定条件,如果标准死记硬背(例如带有 actionPage 的 SomeController)不执行指定的默认路由(例如 DefaultController / actionDefault)?
此规则覆盖默认路由并将所有请求转发到我指定的路由
'urlManager' => [
...
'suffix' => '.html',
'rules'=>[
'<alias:[0-9a-zA-Z-_/]+>' => 'default/default',
]
]
换句话说,算法应该如下:
- 检查解析的 url 是否与现有的 module/controller/action 匹配,然后处理这个
- 否则通过配置中预定义的路由处理请求
这是一本关于 urlManager 的好手册:guide yii2
您还必须为 mod_rewrite(Apache 或 Nginx)更改服务器上的 .htaccess => guide yii2
我猜交易不在路由中。我的问题已通过使用覆盖 parseUrl 方法的扩展 urlManager class 解决,该方法检查每个请求是否存在其 url 在数据库中。如果不存在,则 returns 父方法结果。感谢您尝试提供帮助:)
P.S。但是,如果此 url 与标准路由方案一致,则覆盖此方案。