本部分内容适用于 ThinkPHP V2.0版本,在 3.0
版本中,泛路由已经变更为正则路由。如果您需要了解其他版本的路由,请参考:
ThinkPHP 3.0 正则路由
ThinkPHP 2.1
路由
ThinkPHP URL 泛路由
泛路由指的是对同一个路由名称提供了多个规则的支持,使得 URL
的设置更加灵活。例如:
http://www.phplo.com/index.php/product/123 这样的 URL
地址
实际访问的地址是 http://www.phplo.com/index.php/Products/show/product_id/123
而
http://www.phplo.com/index.php/product/2010/10 这样的 URL 地址,实际访问的地址是
http://www.phplo.com/index.php/Products/archive/year/2010/month/10
泛路由定义及实例
泛路由语法定义
泛路由规则中需要使用PHP正则表达式来对路由进行匹配,具体语法规则如下:
- return array(
- // 泛路由
- 'RouteName@'=>array(
- array('路由匹配正则', '模块名称', '操作名称', '参数定义', '额外参数'),
- ),
- )
提示
如果您使用的是 ThinkPHP 2.1RC
及更高版本,请同时参阅《ThinkPHP 2.1 版本 URL 路由规则对比 2.0
版本的变更》。
泛路由使用实例
以本文开始的例子为例,泛路由配置如下:
- return array(
- // 泛路由
- 'product@'=>array(
- array('/^/(d+)$/', 'Products', 'show', 'product_id'),
- array('/^/(d+)/(d+)$/', 'Products', 'archive','year,month'),
- ),
- )
泛路由规则中,使用正则表达式来匹配 URL
地址中路由名后边的字串,如下红色部分:
http://www.phplo.com/index.php/product/2010/10
其他参数上的使用和常规路由的使用一致。
参考阅读
PHP正则表达式