如何仅为Firebase Dynamic Links设置自定义子域名且不影响Hosting服务
报错是因为部署Firebase Hosting时,默认配置覆盖了link.example.com的路由规则,未配置Dynamic Links匹配规则,导致服务无法正常接收请求。你可以按照以下步骤配置两个子域名的能力隔离:
第一步:在Firebase控制台创建两个独立Hosting站点
进入Firebase控制台的Hosting页面,新增两个站点:
- 第一个站点用于托管Web应用,绑定
app.example.com,可命名为app-web - 第二个站点专门用于Dynamic Links服务,绑定
link.example.com,可命名为dynamic-links
第二步:配置firebase.json规则
修改项目根目录下的firebase.json文件,采用多站点托管配置,分别匹配两个子域名的路由逻辑:
{ "hosting": [ { "target": "app", "public": "build", // 替换为你的Web应用构建产物的实际存放目录 "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], // 单页应用常规路由配置,多页应用可自行调整rewrites规则 "rewrites": [ { "source": "**", "destination": "/index.html" } ] }, { "target": "links", "public": "dynamic-link-public", // 可自定义目录,只需保证目录存在即可 "ignore": ["**"], // 忽略所有静态资源,所有请求直接走Dynamic Links "rewrites": [ { "source": "**", "dynamicLinks": true } ] } ] }
第三步:绑定本地部署target
在本地终端执行Firebase CLI命令,将配置中的target和控制台创建的站点绑定:
# 替换后面的app-web为你在控制台创建的Web应用托管站点的ID firebase target:apply hosting app app-web # 替换后面的dynamic-links为你在控制台创建的Dynamic Links专用站点的ID firebase target:apply hosting links dynamic-links
第四步:部署生效
在你为Dynamic Links配置的public目录(上述配置中为dynamic-link-public)下创建一个空白的index.html文件(避免部署时报目录为空的错误),之后执行部署命令即可:
firebase deploy --only hosting
配置完成后,link.example.com的所有请求会自动转发到Dynamic Links服务,app.example.com的所有请求会正常响应你托管的Web应用资源,两个子域名的能力完全隔离。
内容的提问来源于stack exchange,提问作者Venkat
相关产品推荐
相关产品推荐

