用好路由分组可提升路由文件清晰度与可维护性:通过Route::group()统一配置prefix、middleware、as、namespace等属性,其中prefix不加斜杠,middleware必须为字符串数组(如['auth']),as值末尾带点号(如'admin.'),namespace为相对路径(如'Admin');典型分组包括访客、用户、后台路由;API版本控制宜用嵌套分组;子域名路由支持domain()及通配符。

用好路由分组,能让 routes/web.php 或 routes/api.php 保持清晰、可维护,避免重复声明和面条式代码。核心是把共享特征的路由聚合成组,统一配置前缀、中间件、命名空间或域名,而不是每条路由都写一遍。
用 Route::group() 统一设置共享属性
这是最常用也最推荐的方式。它接受一个配置数组和一个闭包,所有配置项必须放在数组里,否则会被忽略。
- prefix 不加开头或结尾斜杠,比如 'prefix' => 'admin',不是 '/admin/'
- middleware 必须是字符串数组,哪怕只有一个中间件也要写成 ['auth']
- as 值末尾带点号,如 'as' => 'admin.',这样子路由调用 ->name('dashboard') 才会生成 admin.dashboard
- namespace 是相对路径,比如 'namespace' => 'Admin' 表示控制器在 App\Http\Controllers\Admin 下
按模块划分三类典型分组
中大型项目常见结构,直接对应业务角色和访问控制层级:
- 访客路由:无中间件,前缀为 /,适合首页、登录页、注册页
- 用户路由:加 auth 中间件,前缀可选 /user,名称前缀 user.
- 后台路由:加 auth + 权限中间件(如 can:manage-dashboard),prefix => 'admin',as => 'admin.'
API 版本控制用嵌套分组
适合需要多版本兼容的接口,比如 v1 和 v2 路由共存且中间件不同:
- 外层设公共前缀和基础中间件:Route::prefix('api')->middleware('api')
- 内层再分版本:Route::prefix('v1')->middleware('throttle:60,1')
- 注意:内层 prefix 写 'v1',不是 '/v1',否则拼出 /api//v1 导致 404
子域名路由分组提升多租户能力
单应用支撑多个子域名,比如 shop.example.com 和 api.example.com:
- 用 Route::domain('shop.example.com') 包裹对应路由
- 支持通配符:Route::domain('{sub}.example.com'),通过 $request->route('sub') 获取子域名值
- 需配合 Web 服务器(Nginx/Apache)将所有子域名指向 public/ 目录



















