一.路由定义 。启用路由前提是你的 URL 支持 PATHINFO 模式或者兼容模式,而 ThinkPHP 默认的就是 PATHINF 模式
要配置如下启用:
//设置模块以及默认模块
'MODULE_ALLOW_LIST' => array('Home','Admin'),
'DEFAULT_MODULE' => 'Home', // 默认模块,可以省去模块名输入 http://localhost/php004/User
原来的 http://localhost/php004/Home/User/index
二.规则路由
//启用路由功能
'URL_ROUTER_ON'=>true,
//配置路由规则
'URL_ROUTE_RULES'=>array(
'u'=>'User/index',
这里只要输入:http://localhost/php004/u
原来的:http://localhost/php004/User/index
),
//静态地址和动态地址结合路由
1、
'URL_ROUTE_RULES'=>array(
'u/:id'=>'User/index',
http://localhost/php004/u/3
对应的原URL:http://localhost/php004/User/index/id/5
3就是传递的id值,通过$_GET['id']获取。
),
2、
'u/:type/:attr/:list'=>'User/index', =>http://localhost/php004/u/7/8/9
对应了动态type、attr、list
//全动态地址
':u/:id'=>'User/index'
//数字约束
'u/:id\d'=>'User/index',
给id后面加上一个正则的\d表示只能传递数字
//支持函数
'u/:id\d|md5'=>'User/index',
给id进行md5加密
//可选传参
'u/[:id\d]'=>'User/index',
这样的话,参数处在可选状态
//$表示后面不允许再有东西
'u/:id$'=>'User/index',
//正则路由
'/^u\/(\d{2})$/'=>'User/index?id=:1',
后面用普通的 URL 模式对应规则,不能使用'User/index/id/:1',
这里的:1 表示对应第一个正则圆括号。
//正则路由也支持函数
'/^u\/(\d{2})$/'=>'User/index?id=:1|md5',
静态路由
静态路由其实就是规则路由的简化版(又称 URL 映射) ,它就是撇除了动态路由的功能。
//配置静态路由
'URL_MAP_RULES'=>array(
'u/i'=>'User/index',
),
配置闭包定义,不执行控制器方法
'URL_ROUTE_RULES'=>array(
//规则路由
'u/:id'=>function ($id) {
echo 'id:'.$id;
},
//正则路由
'/^u\/(\d{2})$/'=>function ($id) {
echo 'id:'.$id;
},
),