正在加载...
2008-1
28

所谓路由功能,就是利用TP内部的处理机制,将例如index.php/aaa的形式用index.php/bbb来表示。看起来在浏览器里面是在访问index.php/bbb,其实执行的是index.php/aaa的操作~~一定程度上可以起到迷惑的作用,保证了TP的安全(所谓和TP对于URL表示有关)

要使用路由功能,需要以下两步

  1. 在配置文件_config.php中设定”ROUTER_ON”为true
  2. 在config目录下创建_routes.php这个文件

其中_routes.php文件就为路由文件,在这个文件中进行设定

该文件有两种写法,一种是return array{}这种格式,另外一种是定义$_routes为array。两种方法都可以,但是个人偏爱于第一种,看起来比较舒服(其实差不多)

路由有分为常规路由和泛路由两种。常规路由,就为一对一的进行路由转义。比如

return array(

‘test’=>array(’Article’,'add’,’sid,time’参数,’mid=36′额外参数));

则此时所有指向URL/test/sid/time的操作,最终都指向为URL/Article/add/sid/time操作并且还隐含传入了mid=36这个额外的参数~

泛路由实在常规路由基础上的加入了正则表达式的匹配

return array(

‘test@’=>array(

array(‘/^\/(\d+)(\/p\/\d)?$/’,’Blog’,'article’,'id’),

array(’/^\/(\d+)\/(\d+)/’,'Blog’,'archive’,'month/day’))

)

上面一个就是一个泛路由。表示将URL/test111的路径解析到URL/Blog/article/id/111,将URL/test/12/13的路径解析到URL/Blog/archive/month/12/day/13这个路径上面

其实泛路由最终还是回到了正则表达式的写法上面去了。一定程度上和Apache的rewrite比较类似。所不同的是这个过程是由PHP来解析而不是Apache来解析。

个人认为如果有有条件,还是使用Apache的rewrite功能,实在不行,比如虚拟主机限制等条件,才考虑使用框架的路由解析功能~

: http://www.breestealth.com/59/thinkphp_route.html

本文相关评论 - 1条评论都没有呢

还没有任何评论。