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

Firebase双子域配置问题:动态链接跳转至Web端异常

Firebase动态链接跳转异常与404问题排查方案

问题场景

  • Firebase Hosting配置两个子域,Flutter Web应用运行正常
  • 将其中一个子域关联至Firebase Dynamic Links后,生成的动态链接始终跳转至Web版本
  • 调整firebase.json中rewrites规则顺序后,长链接出现「页面未找到」错误

附:当前配置与代码

firebase.json 配置

{
  "hosting": {
    "public": "build/web",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      // 调整过顺序的路由重写规则
    ]
  }
}

Flutter端动态链接构建代码

final dynamicLinkParams = DynamicLinkParameters(
  uriPrefix: 'https://your-subdomain.page.link',
  link: Uri.parse('https://your-app.com/deep-link'),
  androidParameters: AndroidParameters(
    packageName: 'com.your.app',
    minimumVersion: 123,
  ),
  iosParameters: IOSParameters(
    bundleId: 'com.your.app',
    minimumVersion: '1.0.0',
  ),
);
final dynamicLink = await dynamicLinkParams.buildShortLink();

Firebase控制台截图

Dynamic Links子域关联配置


排查与修复步骤

1. 拆分Dynamic Links与Hosting的子域关联

Dynamic Links关联的子域不能同时作为Flutter Web的托管子域,Firebase会优先将该子域的请求导向Dynamic Links服务,而非Hosting。操作:

  • 从Firebase Hosting「自定义域」列表中移除关联Dynamic Links的子域
  • 确认Dynamic Links控制台中该子域状态为「已验证」

2. 修正firebase.json的rewrites规则

规则顺序会直接影响路由匹配,确保非Dynamic Links子域的请求优先指向Flutter Web,同时不干扰Dynamic Links子域的默认处理。示例配置:

{
  "hosting": {
    "public": "build/web",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      // 仅针对非Dynamic Links子域的请求,重写至Flutter入口
      {
        "source": "**",
        "condition": {
          "host": "your-web-subdomain.yourdomain.com"
        },
        "destination": "/index.html"
      }
    ]
  }
}

注:如果Dynamic Links子域仍在Hosting的自定义域列表中,rewrites规则会覆盖Dynamic Links的默认跳转逻辑,导致异常或404。

3. 校验动态链接参数配置

Flutter端构建时需确保:

  • uriPrefix严格匹配Dynamic Links控制台中关联的子域(如https://your-subdomain.page.link)
  • androidParameters/iosParameters填写的包名、Bundle ID与移动端App完全一致
  • 若需Web端也处理深层链接,需确保link参数对应的路由在Flutter Web中已配置

4. 部署与测试

  • 重新部署Hosting配置:firebase deploy --only hosting
  • 使用无痕模式测试动态链接,避免缓存干扰
  • 利用Firebase控制台的「测试动态链接」工具验证跳转逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:30:49