ThinkPHP6.0路由分组核心是Route::group(),需落实前缀拼接、显式命名、配置覆盖和文件拆分四点:1.用路径前缀+闭包实现自动继承;2.每个子路由必须→name()支持权限与URL生成;3.用→option()覆盖全局配置如url_html_suffix;4.大型项目按业务拆分文件并手动引入,及时清缓存。

1. 基础分组:带前缀的闭包写法
最常用也最清晰的方式:传入路径前缀 + 闭包,内部路由自动继承前缀。
- 写法示例:Route::group('admin', function () { Route::get('user/list', 'admin.UserController@list')->name('admin.user.list'); }); → 实际访问地址是 /admin/user/list
- 路径是相对的,闭包内写
user/list,不是/admin/user/list - 若只需统一中间件、不加 URL 前缀,前缀可传空字符串:
Route::group('', function () { ... })->middleware(...);
2. 必须显式命名(name)才能用于权限和URL生成
没设 ->name() 的路由,$request->rule()->getName() 返回空或反射路径,RBAC 权限校验会失效,url() 助手函数也无法精准生成链接。
- 命名规则:小写字母 + 点号分隔,如
admin.user.edit、api.v2.order.create - 层级设计有实际用途:Auth::check('admin.user') 可匹配所有以
admin.user.开头的路由名 - 分组本身不自动带 name,每个子路由都要单独调用
->name()
3. 覆盖分组专属配置,避免继承全局设置
分组默认继承 config/route.php 全局配置(比如 url_html_suffix),但 API 分组通常不能带 .html 后缀,后台分组可能要强制 HTTPS —— 这些都得手动重置。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 用
->option([...])链式调用覆盖,且必须写在闭包之后、分号之前 - 常见重置项:
'url_html_suffix' => ''、'https' => true、'url_domain_bind' => false - 错误做法:在闭包里改 config 或运行时 set_config —— 分组注册时已快照配置,后续修改无效
4. 大型项目建议拆分到独立文件
当 admin、api/v1、api/v2 等分组变多,把全部路由堆在 route/app.php 会导致维护困难。可按业务域拆成子文件,但要注意引入方式和上下文完整性。
立即学习“PHP免费学习笔记(深入)”;
- 在
app/route/app.php末尾手动引入:include_once __DIR__ . '/admin.php'; -
admin.php内仍需完整写分组:Route::group('admin', function () { ... })->name('admin.'); - 不能只写
Route::get()—— 否则丢失前缀、中间件、命名空间上下文 - 改完子文件后务必执行
php think route:clear清缓存,否则新路由不生效


















