thinkphp高频路由写法包括:基础静态路由(如route::get('/', 'index/index/index'))、带变量动态路由(如route::get('user/', 'user/read', [], ['id' => 'd+']))、多段可选参数路由(如route::get('blog//[/]', 'blog/archive'))、闭包路由(如route::get('api/test', function(){return json(['code'=>0]);}))及批量导入模块路由(如route::import('admin', 'appdmin oute')),所有配置须在route/app.php中,修改后需执行php think route:clear。

在ThinkPHP项目开发中,日常要快速暴露接口、跳转页面、传递参数,必须掌握几类高频路由写法——它们不是理论堆砌,而是上线前反复验证过的实操路径。
基础静态路由:首页和固定入口
这是最常写的起步路由,比如把/指向首页控制器,或把/admin固定映射到后台入口。
第一步:打开项目根目录下的 route/app.php 文件。
第二步:写入静态规则,例如:Route::get('/', 'index/index/index');
第三步:如果需要支持 POST 提交(如登录表单),改用 Route::rule('/', 'index/index/login', 'POST'); ——注意这里不能用 Route::get,否则表单提交会 405 错误。
【必须写在 route/app.php 中,其他位置如 config/route.php 或 app/route.php 不会被自动加载】
带单个变量的动态路由:用户详情页、文章ID跳转
这类路由占所有动态路由的 70% 以上,典型场景是 /user/123 → User/read 方法接收 $id 参数。
方法一(TP6 推荐写法):Route::get('user/<id>', 'user/read');</id>
方法二(兼容 TP5 写法,但不推荐):Route::get('user/:id', 'user/read'); ——该写法在开启严格模式后失效,且无法配合正则约束。
方法三(带正则限制,防非法输入):Route::get('user/<id:>', 'user/read', [], ['id' => 'd+']);</id:> ——这样能确保 id 只接受纯数字,避免 /user/abc 触发空指针异常。
注意:控制器方法签名必须严格匹配变量名,public function read($id) 不能写成 read($uid),否则参数为空。
多段变量 + 可选参数:归档页、年月日文章列表
当 URL 要体现层级逻辑,比如 /blog/2024/07 或 /blog/2024/07/15 都指向同一方法,就得用可选参数。
直接写:Route::get('blog/<year>/<month>[/<day>]', 'blog/archive');</day></month></year>
这行代码会让以下三种访问都命中:/blog/2024/07、/blog/2024/07/15、/blog/2024/07/(末尾斜杠可有可无)。
控制器方法必须按顺序接收:public function archive($year, $month, $day = null) ——$day 设为默认值 null,否则访问两段路径时会报参数缺失错误。
闭包路由:临时调试或简单返回
不想新建控制器,只想快速返回 JSON 或 HTML 片段时,闭包最省事。
Route::get('api/test', function () { return json(['code' => 0, 'msg' => 'ok']); });
但闭包里调模型必须用完全限定名:return ppmodelUser::find(1); ——写 User::find(1) 会报 Class not found,因为闭包不在任何命名空间下。
批量导入模块路由:前后台分离必备
大型项目通常拆分 admin 和 index 模块,各自路由应隔离维护。
在 route/app.php 中加入:Route::import('admin', 'app\admin\route');
然后创建 app/admin/route.php,内容为:use thinkacadeRoute; Route::get('/', 'index/index');
这样 admin 模块的路由就独立加载,不影响前台逻辑。修改后必须执行:php think route:clear,否则新路由不生效。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











