您的位置:首页 > 编程语言 > PHP开发

thinkphp路由规则

2016-02-27 22:30 465 查看
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'

路由表达式支持的正则定义必须以“/”开头,否则就视为规则表达式。

静态路由:

不包含动态参数的最简单的路由。

闭包支持:

一种简陋的函数传递方案,不再需要控制器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: