thinkphp路由规则
Think PHP的路由规则暂只支持PATHINFO模式或者兼容模式,实现对模块的路由操作。
Think PHP包括四类路由:正则路由、规则路由、静态路由(URL映射)、闭包支持。
开关路由:
'URL_ROUTER_ON' => false
关闭路由的配置将不允许使用路由规则。
路由定义规则:
路由规则的定义格式为: '路由表达式'=>'路由地址和传入参数'
或者:array('路由表达式','路由地址','传入参数')
这一部分不具体介绍Think PHP的定义方法,你可以在需要定义的时候自行查阅官方文档。
这里主要介绍Think PHP 路由除了一般的重定向的作用还能做的事情:
采用302重定向(你也可以404):
'blog/:id'=>array('http://blog.thinkphp.cn/read/:1',302);
隐藏额外参数:
'blog/:id'=>'blog/read?status=1&app_id=5'
'blog/:id'=>array('blog/read?status=1&app_id=5')
'blog/:id'=>array('blog/read','status=1&app_id=5')
'blog/:id'=>array('blog/read',array('status'=>1,'app_id'=>5))
限制URL后缀:
'blog/:id'=>array('blog/read','status=1&app_id=5',array('ext'=>'html'))
限制请求类型:
'blog/:id'=>array('blog/read','status=1&app_id=5',array('method'=>'get'))
自定义检测:
'blog/:id'=>array('blog/read','status=1&app_id=5',array('callback'=>'checkFun'))
使用checkFun()函数检测
路由规则参数:
每个参数中以“:”开头的参数都表示动态参数,并且会自动对应一个GET参数,例如 :id 表示该处匹配到
的参数可以使用 $_GET['id'] 方式获取, :year 、 :month 、 :day 则分别对应 $_GET['year'] 、
$_GET['month'] 和 $_GET['day']
参数类型约束:
'blog/:id\d'=>'Blog/read'
id参数必须为数字参数
函数支持:
'blog/:id\d|md5'=>'Blog/read'
将id参数MD5加密
规则排除:
'news/:cate^add-edit-delete'=>'News/category'
要求cate参数只能是add\edit\delete参数三选一
完全匹配:
'new/:cate$'=> 'News/category'
http://serverName/index.php/Home/new/info
会匹配成功,而
http://serverName/index.php/Home/new/info/2
则不会匹配成功。
正则路由:
'#^blog\/(\d+)$#' => 'Blog/read/id/:1'
路由表达式支持的正则定义必须以“/”开头,否则就视为规则表达式。
静态路由:
不包含动态参数的最简单的路由。
闭包支持:
一种简陋的函数传递方案,不再需要控制器。