静态路由其实属于规则路由的静态简化版(又称为URL映射),路由定义中不包含动态参数,静态路由不需要遍历路由规则而是直接定位,因此效率较高,但作用也有限。
如果我们定义了下面的静态路由
'URL_ROUTER_ON' => true,
'URL_MAP_RULES'=>array(
'new/top' => 'news/index/type/top'
)
注意:为了不影响动态路由的遍历效率,静态路由采用URL_MAP_RULES定义和动态路由区分开来
定义之后,如果我们访问:
http://serverName/Home/new/top
其实是访问:
http://serverName/Home/news/index/type/top
静态路由是完整匹配,所以如果访问:
http://serverName/Home/new/top/var/test
尽管前面也有new/top
,但并不会被匹配到news/index/type/top
。
如果当前URL地址采用了伪静态支持的话,静态路由的定义需要包含伪静态后缀才能生效,例如:
'URL_ROUTER_ON' => true,
'URL_MAP_RULES'=>array(
'new/top.html' => 'news/index?type=top'
)
静态路由的路由地址 只支持字符串,格式:
[控制器/操作?]参数1=值1&参数2=值2