在thinkphp5中,url的访问有三种模式
1. 如果一个URL没有定义路由,则采用默认的PATH_INFO 模式访问URL:
http://serverName/index.php/module/controller/action/param/value/...
return [
'__pattern__' => [
'name' => '\w+',
],
'[hello]' => [
':id' => ['index/hello', ['method' => 'get'], ['id' => '\d+']],
':name' => ['index/hello', ['method' => 'post']],
],
];
2. 强制路由模式:
在app.php
配置文件中设置
'url_route_must' => true,
将开启强制使用路由,这种方式下面必须严格给每一个访问地址定义路由规则(包括首页),否则将抛出异常。
- 首页的路由规则采用/定义即可,例如下面把网站首页路由输出Hello,world!
Route::get('/', function () { return 'Hello,world!'; });
- 路由定义格式:
Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');
- 动态路由注册必须使用think的Route类。
- 请求类型类型可以有多种,get,post,put,delete,patch,any(请求类型参数不区分大小写。)
- 路由参数(数组)请参照官方文档thinkphp5.1开发文档-路由参数
use think\Route;
Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');
Route::rule('hello','sample/Test/hello','GET');
Route::rule('hello','sample/Test/hello','GET|POST');
//请求的快捷注册方式
Route::快捷方法名('路由表达式','路由地址');
Route::get('new/:id','News/read'); // 定义GET请求路由规则
Route::post('new/:id','News/update'); // 定义POST请求路由规则
Route::put('new/:id','News/update'); // 定义PUT请求路由规则
Route::delete('new/:id','News/delete'); // 定义DELETE请求路由规则
Route::any('new/:id','News/read'); // 所有请求都支持的路由规则;
3. 混合模式:
混合模式是指在route.php
文件中,有的接口是可以使用传统的tp5path_info
的访问形式,有的接口是可以使用路由的访问形式。(但是对于同一个接口来说,定义了路由的访问形式,传统的path_info
访问形式就失效了。)
以上是简单的tp5的路由,还有很多点没涉及到,等用到了再细说,具体参照文档tp5路由