将 Firebase 托管根目录重定向到云功能不起作用



我正在使用Firebase Hosting和一个firebase.json文件,该文件应该将所有流量转发到云函数(预渲染(,该函数填充SEO的元和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 仪表板的"函数"-> 日志下正确接到了调用:

prerender function: "null"

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

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

您应该能够以完全显示的方式将所有 URL 路由到函数。 我猜你仍然有一个索引.html文件位于你的dist/prod目录中。 在我的测试项目中,我只是将根索引重命名.html为其他名称,对/的请求被路由到我的函数。

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

我相信关键信息在重写文档中:

仅当文件或文件夹在 指定的源,并在 目标,而不是 HTTP 重定向。

最新更新