子域名配置正确方法:Firebase+GoDaddy子域名跳转异常求助
解决Firebase托管子域名跳转主站的问题
看起来你已经走完了大部分配置流程,但子域名跳主站的问题大概率出在Firebase托管的多站点配置或者AngularJS的基础路径设置上,我帮你一步步排查解决:
1. 确认Firebase子域名的激活状态
先打开Firebase控制台的「托管」>「域名」页面,检查sub1.website.com和sub2.website.com的状态是否为已激活:
- 如果显示「待验证」,说明GoDaddy的DNS记录还未完全生效(DNS解析通常需要10分钟到几小时),可以等待一段时间后点击「重新验证」;
- 如果状态正常,继续往下排查。
2. 修正Firebase托管的多站点配置(关键步骤)
默认情况下,Firebase托管会把所有域名请求都导向根目录的public文件夹,你需要在firebase.json里为每个子域名单独指定对应托管目录。给你一个正确的配置示例:
{ "hosting": [ { "public": "public", "domain": "website.com" }, { "public": "public/sub1", "domain": "sub1.website.com" }, { "public": "public/sub2", "domain": "sub2.website.com" } ] }
配置完成后,重新部署项目:
firebase deploy --only hosting
这样Firebase就会把每个子域名的请求精准对应到public下的对应子文件夹,而不是主站的根目录。
3. 检查子目录中AngularJS的base href设置
因为你用AngularJS开发,每个子域名对应的子文件夹里的index.html需要正确设置<base href>:
- 对于
sub1.website.com,sub1/index.html里的base标签应该写:
不要设置成<base href="/">/sub1/,因为子域名的根路径已经对应到public/sub1文件夹,用绝对根路径才能让AngularJS的路由正常工作。
4. 验证DNS记录的正确性
登录GoDaddy的DNS管理界面,确认子域名的A记录指向的是Firebase提供的托管IP(Firebase控制台会明确给出,通常是两个IPv4地址)。你也可以用命令行工具快速验证:
nslookup sub1.website.com
如果返回的IP和Firebase给出的一致,说明DNS配置没问题。
5. 清除缓存后测试
浏览器缓存可能会保留旧的跳转规则,建议用隐私模式打开子域名测试,或者手动清除浏览器缓存后再访问。另外,Firebase部署后的生效可能需要几分钟,不用太着急。
如果以上步骤都完成后还是有问题,可以去Firebase控制台的「托管」>「日志」页面,查看子域名请求的日志,看看请求被路由到了哪个目录,这样能更精准定位问题。
内容的提问来源于stack exchange,提问作者ossmalpha
相关产品推荐
相关产品推荐

