将 Firebase 托管根目录重定向到 Cloud Functions 不起作用
Redirect Firebase Hosting root to a Cloud Function is not working
我将 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 仪表板中正确地收到了调用:
prerender function: "null"
但是,当调用 https://mypage.firebaseapp.com
时,我没有得到任何日志,它似乎在我的 dist/prod
文件夹中呈现 index.html
。
重写后我遗漏了什么吗?我尝试将 /
重写为相同的函数,但没有成功。非常感谢任何提示!
您应该能够按照您显示的方式将所有 URL 路由到一个函数。我猜您的 dist/prod 目录中仍然有一个 index.html 文件。在我的测试项目中,我只是将根 index.html 重命名为其他内容,并且对 /
的请求被路由到我的函数。
事实证明,如果存在与客户端请求匹配的静态 Web 内容 URL,将提供该内容而不是委托给该函数。 这是事实对于任何传入 URL。真正确保 all 请求路由到您的函数的唯一方法是在部署之前从 dist/prod
文件夹中删除 all 内容。
我认为关键信息在 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.
我将 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 仪表板中正确地收到了调用:
prerender function: "null"
但是,当调用 https://mypage.firebaseapp.com
时,我没有得到任何日志,它似乎在我的 dist/prod
文件夹中呈现 index.html
。
重写后我遗漏了什么吗?我尝试将 /
重写为相同的函数,但没有成功。非常感谢任何提示!
您应该能够按照您显示的方式将所有 URL 路由到一个函数。我猜您的 dist/prod 目录中仍然有一个 index.html 文件。在我的测试项目中,我只是将根 index.html 重命名为其他内容,并且对 /
的请求被路由到我的函数。
事实证明,如果存在与客户端请求匹配的静态 Web 内容 URL,将提供该内容而不是委托给该函数。 这是事实对于任何传入 URL。真正确保 all 请求路由到您的函数的唯一方法是在部署之前从 dist/prod
文件夹中删除 all 内容。
我认为关键信息在 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.