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

Laravel中如何用url()或route()助手生成带子域名的链接?

解决Laravel子域名登录链接生成问题

问题根源

你给子域名和主域名的登录路由设置了相同的名称admin.login,Laravel在匹配命名路由时,会按路由注册顺序返回对应链接,导致直接调用route('admin.login')只会返回主域名的地址。

解决方案

1. 给子域名路由设置唯一名称

修改子域名路由组内的登录路由名称,避免和主域名路由重名:

Route::group(['domain' => '{subdomain}.' . env('APP_URL'), 'prefix' => 'console', 'namespace' => 'admin', 'middleware' => 'subdomain'], function () {
   Route::get('/login', 'LoginController@index')->name('admin.subdomain.login'); // 设置唯一命名
});

2. 生成子域名登录链接

在邮件代码中调用路由时,传入目标子域名参数即可生成正确链接:

// 替换为实际业务中的子域名,比如 'store001'
$targetSubdomain = 'your-subdomain';
$subdomainLoginUrl = route('admin.subdomain.login', ['subdomain' => $targetSubdomain]);

备选方案(不修改路由名称)

如果不想调整路由命名,可在调用route()时强制指定子域名模板:

$subdomainLoginUrl = route('admin.login', [], ['domain' => 'your-subdomain.' . env('APP_URL')]);

不过这种方式可读性较差,不如修改路由名称的方案稳妥。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:27:41