gpt4 book ai didi

javascript - 将 Firebase 托管根目录重定向到 Cloud Functions 不起作用

转载 作者:数据小太阳 更新时间:2023-10-29 04:02:17 25 4
gpt4 key购买 nike

我将 Firebase 托管与 firebase.json 文件一起使用,该文件应该将所有流量转发到云函数(prerender),该函数为 SEO 填充 meta 和 og 标签。

{
"hosting": {
"public": "dist/prod",
"rewrites": [
{
"source": "**",
"function": "prerender"
}
]
}
}

我的 prerender 函数正在处理请求并呈现 HTML 文件。这很好用:

export const prerender = functions.https.onRequest((req, res) => {
console.log('prerender function: "' + req.path + '"');
...
}

当到达 https://xxx.cloudfunctions.net/prerender 的终点时,我在 Firebase 仪表板的 Functions -> Logs 下正确地收到了调用:

prerender function: "null"

但是,当调用 https://mypage.firebaseapp.com 时,我没有收到任何日志,它似乎在我的 中呈现了 index.html dist/prod 文件夹。

重写后我遗漏了什么吗?我尝试将 / 重写为相同的函数,但没有成功。非常感谢任何提示!

最佳答案

您应该能够按照您显示的方式将所有 URL 路由到一个函数。我猜您的 dist/prod 目录中仍然有一个 index.html 文件。在我的测试项目中,我只是将根目录 index.html 重命名为其他内容,并将对 / 的请求路由到我的函数。

事实证明,如果存在与客户端请求 URL 匹配的静态 Web 内容,将提供该内容而不是委托(delegate)给函数。对于任何传入 URL 都是如此。真正确保所有请求都被路由到您的函数的唯一方法是在部署之前从您的 dist/prod 文件夹中删除所有内容。

我认为关键信息在 rewrites 的文档中:

A rewrite rule is only applied if a file or folder does not exist at the specified source, and returns the actual content of the file at the destination instead of an HTTP redirect.

关于javascript - 将 Firebase 托管根目录重定向到 Cloud Functions 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44871075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com