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

Laravel 5.3本地环境下获取子域名值的技术问询

获取Laravel子域名参数的正确姿势

嘿,作为Laravel新手能折腾子域名路由已经很赞啦!你的思路其实是对的,不过可能有几个细节需要调整,让我们一步步来解决:

首先,先确认本地的域名解析没问题——你得在hosts文件里把主域名和子域名都指向127.0.0.1,不然Laravel根本接收不到子域名的请求:

127.0.0.1 localhost.vibrant-invitations.com
127.0.0.1 sadmin.localhost.vibrant-invitations.com

接下来优化你的路由写法,硬编码域名不太灵活,我们可以把主域名放到配置文件里:
在config/app.php里添加一行:

'domain' => 'localhost.vibrant-invitations.com',

然后调整路由分组,这样后续域名变更只需要改配置就行:

Route::group(['domain' => '{subdomain}.' . config('app.domain')], function () {
    Route::get('/', function ($subdomain) {
        // 这里用first()比get()更合适,因为你是按用户名查单个用户
        $user = DB::table('users')->where('name', $subdomain)->first();
        
        // 调试的时候可以清晰看到子域名和匹配结果
        dd('当前子域名:' . $subdomain, '匹配到的用户:', $user);
    });
});

// 主域名的路由保留
Route::get('/', function () {
    return '欢迎来到主域名页面!';
});

如果之后你需要在路由组以外的地方获取子域名,也可以直接从请求里解析:

// 方法1:从路由参数获取(前提是路由定义了{subdomain})
$subdomain = request()->route('subdomain');

// 方法2:手动解析域名
$hostParts = explode('.', request()->getHost());
$subdomain = $hostParts[0]; // 这里要注意如果是多级域名的情况,比如xxx.yyy.com,需要调整索引

最后还有两个小提醒:

  • 每次修改路由后,记得运行php artisan route:clear清除路由缓存,不然可能看不到变化
  • 如果你的场景允许主域名也走这个路由组,可以把参数设为可选:'{subdomain?}.' . config('app.domain'),然后在闭包里判断$subdomain是否为空

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:24:08