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

Laravel子域名路由如何让指定命名路由固定返回对应域名

问题根因

你当前的路由配置仅给home1绑定了子域名,没有给home2显式绑定根域名。Laravel生成未绑定固定域名的路由时,会默认复用当前请求的域名,所以你在app.example.com下生成home2路由时,会自动带上app子域名,导致跳转后子域名没有变化。

解决方案

方法1:显式给所有路由绑定固定域名(最稳妥,推荐)

给两个路由分别显式指定对应域名,后续无论当前访问的域名是什么,route()函数都会生成对应绑定域名的完整URL,无需额外处理。

  1. 先在.env文件中新增域名配置,避免代码硬编码:
# 新增以下两行配置
APP_DOMAIN=example.com
APP_SUB_APP_DOMAIN=app.example.com
  1. 修改config/app.php,新增对应配置项读取.env的值:
return [
    // 保留原有其他配置不变,新增以下两行
    'domain' => env('APP_DOMAIN', 'example.com'),
    'sub_app_domain' => env('APP_SUB_APP_DOMAIN', 'app.example.com'),
];
  1. 修改routes/web.php的路由配置:
// 根域名路由组
Route::domain(config('app.domain'))->group(function(){
  Route::get('/','ExampleController@method')->name('home1');
});

// app子域名路由组
Route::domain(config('app.sub_app_domain'))->group(function(){
  Route::get('/','ExampleController@method')->name('home2');
});

配置完成后效果:

  • route('home1') 固定返回 http://example.com
  • route('home2') 固定返回 http://app.example.com

方法2:生成路由时强制指定根域名(临时适配用)

如果不想修改现有路由结构,仅需要部分场景下生成正确域名的路由,可以在调用route()函数时手动指定根URL:

// 生成home1路由时强制使用根域名
route('home1', [], true, 'http://example.com');

// 生成home2路由时强制使用app子域名
route('home2', [], true, 'http://app.example.com');

该方法需要在每次生成对应路由时手动指定参数,仅适合临时少量调用的场景,不建议全局大量使用。

验证

你可以在控制器或者视图中打印路由测试效果:

dd(route('home1'), route('home2'));

无论当前访问的是根域名还是app子域名,输出的两个路由都会符合预期。


内容的提问来源于stack exchange,提问作者abdulkadir polat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 21:09:02