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

Laravel多租户本地运行报Hostname localhost does not include a subdomain如何解决

解决方案

该报错由Laravel多租户包的子域名校验规则触发,默认不允许无租户子域名的域名(如localhost)直接访问项目,可按以下步骤排查修正:

1. 校验本地hosts配置

  • 找到对应系统的hosts文件:
    • Windows:C:\Windows\System32\drivers\etc\hosts
    • Mac/Linux:/etc/hosts
  • 以管理员权限打开文件,添加你规划的域名映射,示例如下:
    127.0.0.1 tenancy.test # 中央域名
    127.0.0.1 tenant1.tenancy.test # 测试用租户子域名
    
  • 配置完成后在终端执行ping tenant1.tenancy.test,确认返回IP为127.0.0.1即配置生效

2. 修正XAMPP Apache虚拟主机配置

  • 打开XAMPP安装目录下的apache/conf/extra/httpd-vhosts.conf文件
  • 添加虚拟主机配置,示例如下:
    <VirtualHost *:80>
        DocumentRoot "你的项目绝对路径/public"
        ServerName tenancy.test
        ServerAlias *.tenancy.test
        <Directory "你的项目绝对路径/public">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    
    ServerAlias *.tenancy.test为必填配置,作用是让所有子域名请求都指向当前项目
  • 保存配置后重启XAMPP的Apache服务

3. 调整Laravel多租户配置

  • 打开项目config/tenancy.php文件(以常用的stancl/tenancy包为例)
  • 确认central_domains参数配置为你的中央域名:
    'central_domains' => [
        'tenancy.test',
    ],
    
  • 本地临时调试无需子域名校验时,可在项目.env文件添加TENANCY_ENABLED=false关闭校验,生产环境记得改回开启状态

4. 验证访问

全部配置完成后,不要使用http://localhost访问项目,中央域访问用http://tenancy.test,租户访问用你配置的子域名如http://tenant1.tenancy.test即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:18:03