提示
本部分内容适用于 ThinkPHP V2.0版本,在 3.0 版本中,泛路由已经变更为正则路由。如果您需要了解其他版本的路由,请参考:
ThinkPHP URL 泛路由
泛路由指的是对同一个路由名称提供了多个规则的支持,使得 URL 的设置更加灵活。例如:
http://www.5idev.com/index.php/product/123 这样的 URL 地址,实际访问的地址是 http://www.5idev.com/index.php/Products/show/product_id/123
而 http://www.5idev.com/index.php/product/2010/10 这样的 URL 地址,实际访问的地址是 http://www.5idev.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.5idev.com/index.php/product/2010/10
其他参数上的使用和常规路由的使用一致。