You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10:如何从子域名环境通过路由名获取主域名完整URL?

解决Laravel子域名环境下生成主域名路由URL的问题

核心原因

Laravel的route()函数默认会继承当前请求的域名生成URL,当你在子域名的请求上下文(比如sobdomain.domain.com的ClientController)中调用该函数,就会自动带上子域名前缀。

解决方案

方案1:给后台资源路由显式指定主域名

直接在后台路由定义时绑定主域名,这样无论在哪个请求上下文里生成URL,都会使用指定的主域名:

// admin side
Route::domain('domain.com')->resource('helpdesk', TicketController::class);

方案2:生成URL时强制指定域名

如果不想修改路由定义,可以在调用route()函数时,通过第三个参数传入domain选项覆盖当前域名:

// 在ClientController的index方法中
$url = route('helpdesk.show', ['ticket' => 1], ['domain' => 'domain.com']);

注:路由参数的键名需与资源路由的参数名匹配(默认是模型类名小写,比如Ticket对应ticket,直接传数值1也可正常工作)。

方案3:给后台路由组设置domain为null

如果后台路由允许在任意域名访问,但希望生成URL时默认使用APP_URL配置的主域名,可以给后台路由组设置domain为null,避免继承当前请求的子域名:

Route::domain(null)->group(function () {
    Route::resource('helpdesk', TicketController::class);
});

内容的提问来源于stack exchange,提问作者Jay-r Simpron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:54:51