2

我使用火力地堡有firebase.json文件应该所有流量转发到云功能(预渲染),它填充元和OG标签SEO主机。重定向火力地堡托管根到云功能无法正常工作

{ 
    "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终点时,我正确地得到中的呼叫火力地堡仪表板功能下 - >日志:

prerender function: "null" 

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

这有什么,我与重写失踪?我尝试将/改写为相同的功能,但没有成功。任何提示非常感谢!

回答

4

你应该能够路由所有URL的功能正是你展示的方式。我猜你的dist/prod目录中仍然有一个index.html文件。在我的测试项目中,我简单地将根index.html重命名为其他内容,并且请求/被路由到我的函数。

事实证明,如果存在与客户端请求URL相匹配的静态网页内容,那么该内容将被服务而不是委托给该功能。对于任何传入的URL都是如此。只有这样,才能真正做到所有请求路由到您的功能是在部署之前从dist/prod文件夹中删除所有内容

相信的关键信息是rewrites文档中:

如果一个文件或文件夹不会在 指定源存在的重写规则仅适用,并返回的实际内容该文件位于 目的地而不是HTTP重定向。

+0

谢谢!这工作完美。 –

相关问题