Laravel Subdomain Routing_子域名路由分发【教程】

落明同学_9041

落明同学_9041

2026-05-02

259人浏览

原创

Laravel子域名路由必须显式用Route::domain()声明且置于routes/web.php顶部,否则因顺序匹配优先原则被根域名路由拦截;需配置DNS、Web服务器泛解析、动态APP_URL、session.domain=.example.com及/etc/hosts本地映射。

laravel subdomain routing_子域名路由分发【教程】

子域名路由在 Laravel 中不是“开箱即用”的功能,它必须显式用 Route::domain() 声明,否则请求会直接落入根域名路由或 404 —— 这是绝大多数人踩坑的第一步。

Route::domain() 必须写在 routes/web.php 最前面

Laravel 路由匹配是顺序优先(First Match Wins),如果把 Route::domain('admin.example.com') 放在 Route::get('/', ...) 后面,访问 admin.example.com/ 时,根域名的 / 路由会先命中并拦截,子域名分组根本不会执行。

  • ✅ 正确做法:所有 Route::domain() 分组必须置于 routes/web.php 文件顶部,早于任何根域名路由
  • ⚠️ 注意:Route::domain('{sub}.example.com') 和 Route::domain('admin.example.com') 可共存,但通配符路由应放在更具体的之后(如先写死 api.example.com,再写通配 {sub}.example.com),避免误匹配
  • ? 本地开发时,/etc/hosts 必须添加对应行,例如:127.0.0.1 admin.example.com api.example.com;否则浏览器发不出带正确 Host 头的请求

动态子域名参数 {sub} 必须被显式接收

{sub} 是路由参数,不是自动注入的全局变量。若你在 Route::domain('{sub}.example.com') 中用了它,就必须在闭包函数签名或控制器方法参数里声明,否则拿不到值,甚至报错 Missing argument。

  • ✅ 正确写法(闭包):Route::domain('{sub}.example.com')->group(function () { Route::get('/', function ($sub) { return "Welcome to {$sub}"; }); });
  • ✅ 正确写法(控制器):public function index($sub) { ... },且路由需绑定为 Route::get('/', [SubdomainController::class, 'index'])
  • ⚠️ 错误写法:function () { $sub = request()->route('sub'); } —— 看似能取到,但 request()->route() 在中间件中可能为 null,不稳定
  • ? 安全建议:对通配符加约束,比如 ->where('sub', 'shop|admin|api'),防止 hacker.example.com 也被匹配

APP_URL 和 URL 生成必须动态化

硬编码 APP_URL=https://example.com 会导致 route()、url()、邮件链接全部指向错误域名 —— Laravel 不会自动感知当前请求的 Host。

laravel-specialist
laravel-specialist

精通 Laravel 10+,遵循现代 PHP 实践的 Laravel 专家。擅长优雅语法、Eloquent ORM、队列系统及企业级特性...

下载
  • ✅ 推荐做法:在 config/app.php 中把 'url' => env('APP_URL', request()->getSchemeAndHttpHost()),让框架运行时读取当前请求协议+主机名
  • ⚠️ 如果用了 Nginx 反向代理或 CDN,确保 App\Http\Middleware\TrustProxies 已启用,并配置了可信 IP 段,否则 request()->getHost() 可能返回内网地址(如 10.0.1.5)
  • ? 不要用字符串拼接生成跳转链接,比如 redirect('https://admin.example.com/dashboard') —— 这样会丢失 HTTPS 切换、端口、路径前缀等上下文

Session 和 Cookie 跨子域名必须设 session.domain

浏览器同源策略默认禁止 admin.example.com 和 www.example.com 共享 Cookie,导致登录态丢失、Session 不同步 —— 这和 Laravel 无关,是 HTTP 规范。

  • ✅ 解决方案:在 config/session.php 中设置 'domain' => '.example.com'(注意开头的点)
  • ⚠️ 必须配合 HTTPS 使用泛域名证书(*.example.com),否则现代浏览器会拒绝设置该 Cookie
  • ? 验证方式:打开 DevTools → Application → Cookies,检查 Cookie 的 Domain 字段是否为 .example.com
  • ? 补充:若只在部分子域间共享(如仅 shop 和 checkout),可单独设中间件,在请求进入前动态调用 session()->setDomain('.shop.example.com')

最常被忽略的是 Web 服务器配置 —— Nginx/Apache 必须把所有子域名统一指向 Laravel 的 public/ 目录,而不是靠 Laravel 自己“监听”域名。哪怕路由写得再准,请求没进 index.php,一切都没意义。

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

laravel 路由

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2024.04.09

877

10

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

2024.04.09

855

9

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2024.04.09

2508

10

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.10

4481

7

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

2025.08.05

6510

22

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

2025.08.05

4296

13

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

2025.08.05

8049

7

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

2026.03.04

1496

29

Laravel 框架安装指南
Laravel 框架安装指南

本指南详解 Laravel 框架安装全流程,涵盖 PHP 8.1+ 环境配置、Composer 依赖管理工具安装及国内镜像源优化。重点演示使用 composer create-project 命令创建 Laravel 10/11 项目,解决常见安装错误与依赖冲突。从环境搭建到项目初始化,助您快速完成 Laravel 开发环境部署,为后续 Web 应用开发奠定基础。适合 PHP 初学者与框架迁移开发者参考。

2026.04.09

215

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何安装 Composer
如何安装 Composer

共1课时 | 215人学习

Composer手册
Composer手册

共0课时 | 0人学习