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

謝謝!這工作完美。 –

相關問題