无法使用自定义域将Firebase动态链接添加到项目

Spl*_*tar 11 firebase-hosting firebase-dynamic-links

在使用page.link URL前缀(当时唯一的选项)之前,我已经在其他项目中创建了Firebase动态链接。但是,今天为新项目启用动态链接时,不再显示该选项。看起来自定义域文档今天已更新。不幸的是,尽管他们提供了一些有用的示例,但并未解释如何以我能理解的方式解决我的问题。

为自定义域配置动态链接时出错

因此,此消息似乎表明我需要“将链接放在子路径下”。在我看来,/link在此处添加路径前缀应该可以实现?但是进行更改后,我得到了相同的错误消息。

您似乎已经在此托管站点上提供了内容。将链接放在子路径下,以避免与现有内容冲突。

为了尝试解决此问题,我去了我的项目并添加了建议的Hosting配置并进行了部署。

firebase.json:

{
  "hosting": {
    "public": "dist",
    "ignore": [
      "**/.*"
    ],
    "appAssociation": "AUTO",
    "rewrites": [
      {
        "source": "/link/**",
        "dynamicLinks": true
      },
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

即使等待了一个小时,我仍然收到相同的错误,而且我不知道该怎么办。

请注意,/index.html由于我在www.devintent.com上托管了一个Angular单页应用程序,因此我对此进行了重写。

无论我做什么,我总是收到此错误,并且Continue按钮保持禁用状态。我尝试使用裸域devintent.com而不是www.devintent.com,但这无济于事。我尝试使用links.devintent.com,但遇到了相同的错误。

如果我手动disabledContinue按钮中删除,则会收到以下错误消息:

手动配置路径前缀消息 这链接到用于为动态链接手动配置托管文档,文档已经完成了一些步骤。单击Check Again按钮只会使我回到上面第一张图像中的相同错误。


不使用自定义域的解决方法

我现在很高兴使用page.link链接,我只需要创建一个动态链接并不受阻地执行此任务,但是我也无法在控制台中找出任何允许我执行此操作的方法。

对此进行更新:我发现需要将子域添加到page.linkURL。工具提示最后会显示“或Google提供的免费域(例如,yourapp.page.link)”。我本来希望它不那么突出(因为我已经很长时间没有找到它了)。现在可以将使用devintent.page.link对我有效。


但是,我不确定自定义域配置为何不起作用,如果具有现有托管配置和自定义域的项目存在此类复杂性,为什么它会成为默认设置?

Eri*_*dán 31

我遇到了同样的问题并得到了同样的错误。问题是我将所有路由重定向到index.html. 解决方案是index.html通过排除来限制路由。

"rewrites": [
  {
    "source": "/link/**",
    "dynamicLinks": true
  },
  {
    "source": "!/link/**",
    "destination": "/index.html"
  }
]
Run Code Online (Sandbox Code Playgroud)

将新配置部署到 Firebase 托管后,我可以根据需要使用 mydomain.com/link。


sha*_*256 24

我在根(顶点)域上遇到了类似的问题。基本上,如果前缀(在我的例子中是顶点域)是一个提供 200 状态响应的 URL,它不会被接受。在我的情况下,index.html文件public夹中有一个文件。我将它重命名为其他东西并且它起作用了。

这是我的firebase.json

{
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "appAssociation": "AUTO",
    "rewrites": [ { "source": "/**", "dynamicLinks": true } ]
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记在设置后将文件重命名回index.html,以避免网站出现 404 错误 (3认同)
  • 这对我帮助很大!非常感谢...解决方案:将 `index.html` 重命名为其他名称 (2认同)

小智 6

关于使自定义域正常工作,您所做的一切看起来都是正确的。我想知道您是否正在使用最新版本的firebase-tools(CLI)。版本6.5.0中添加了对动态链接的自定义域支持。

好消息是,page.link支持仍然存在,但在新的UI流程中并不那么明显。获取page.link域的方法是开始键入所需的子域,并且应该在UI中弹出一个建议。我提供了一个屏幕截图,以显示其工作方式。

添加page.link域

希望这可以帮助,

杰夫

  • 哦,这很有趣!谢谢,我没有注意到弹出窗口中的“page.link”。此外,我在 [自定义域文档](https://firebase.google.com/docs/dynamic-links/custom-domains) 中没有看到任何关于需要特定版本的 Firebase CLI。我使用的是 firebase-tools 6.3.0。我会给 6.5.0 一个机会。 (2认同)

abe*_*ehr 6

对于我们来说,问题是我们正在使用默认的 Firebase 托管站点在所有路由(“/**”)上为我们的网络应用程序提供服务。从不同的域提供我们的网络应用程序,动态链接对我们来说应该是这样,因为链接不应该干扰网络应用程序。

为了提供来自与我们的网络应用程序不同的域的链接,我创建了一个仅用于链接的新网站,并将我们的自定义域附加到该网站。现在我们有两个 Firebase 托管站点。第一个默认用于我们的网络应用程序,第二个默认用于 Firebase 动态链接。

设置动态链接后,将自定义域附加到第二个 Firebase 托管站点,效果完美。请参阅屏幕截图了解更多详细信息: 在此输入图像描述

EDIT1:网络应用程序的 firebase.json 根据 @cocacrave 的要求:

{
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "function": "nuxtApp"
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)