Laravel 13尚未发布,实际应为Laravel 11或12;stancl/tenancy v4不使用手动routes/tenant.php,而是通过TenantRouteServiceProvider自动加载,需正确配置domain、Web服务器泛解析及租户路由。

Laravel 13 尚未发布(截至 2026 年 11 月,最新稳定版为 Laravel 11),因此不存在官方支持的 “Laravel 13 + stancl/tenancy” 组合。你实际使用的很可能是 Laravel 11 或 12,并误写为 13。stancl/tenancy 当前最新稳定版本是 v4(适配 Laravel 10–12),其路由机制与 Laravel 8–12 一脉相承——它根本不使用 routes/tenant.php 这类手动编写的路由文件。
stancl/tenancy 不走 routes/tenant.php
stancl/tenancy 是约定式多租户方案,路由完全由框架自动管理:
- 它通过
TenantRouteServiceProvider(自动生成)在租户上下文激活时加载routes/tenant.php——但这个文件仅在租户数据库已存在、且当前请求已成功识别租户后才会被加载; -
你不能也不该在 RouteServiceProvider 中手动 require 它,更不能用
Route::domain('{tenant}.example.com')去包裹它——这会破坏 tenancy 的生命周期,导致中间件顺序错乱、租户未初始化就进路由、数据库连接失败等严重问题; - 真正起作用的是
config/tenancy.php中的'domain' => '{tenant}.example.com'配置,以及 tenancy 自动注册的域名解析中间件和路由绑定逻辑。
正确配置子域名路由的三步
你要做的不是“配置 routes/tenant.php 的域名”,而是确保整个 tenancy 域名链路跑通:
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
-
第一步:设置租户域名格式
修改config/tenancy.php:'domain' => '{tenant}.example.com',
(注意不要加http://,也不要写成通配符*.example.com) -
第二步:确保 Web 服务器泛解析
Nginx 示例:server_name ~^(?.+)\.example\.com$;
并在location /内传递$tenant变量(如通过fastcgi_param HTTP_X_TENANT $tenant;或直接依赖 Host 头);
本地开发需在/etc/hosts添加:127.0.0.1 tenant1.example.com127.0.0.1 shop.example.com -
第三步:在 routes/tenant.php 中只写租户专属路由
该文件默认已存在(运行php artisan tenancy:install后生成),内容类似:use Illuminate\Support\Facades\Route;Route::get('/', function () { return view('tenant.home'); });Route::get('/dashboard', [App\Http\Controllers\Tenant\DashboardController::class, 'index']);
✅ 这些路由天然运行在租户上下文中,$tenant可通过request()->tenant()或tenant()->id获取,无需手动声明参数。
常见错误及规避
以下做法会导致路由失效或 404:
- 在
routes/web.php或RouteServiceProvider中重复写Route::domain(...)——tenancy 已接管,再写会冲突; - 把租户路由写进
routes/web.php并期望它对子域名生效——它只响应中央域名(如admin.example.com); - 未运行
php artisan tenancy:migrate就访问子域名——租户数据库未建表,tenancy 会直接拒绝请求; -
SESSION_DOMAIN未设为.example.com(带前导点),导致登录态无法跨子域名共享。
简言之:删掉所有手写的 domain 路由组,信任 stancl/tenancy 的自动绑定机制,专注在 routes/tenant.php 写业务逻辑即可。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










