[地雷文] prerender.io 與 load balance

這篇是一篇踩地雷文

 

前幾個月將公司產品 SPA 化以後放上正式機
發現 SEO 無法像在上測試機一樣,順利的將需要被 rander 的資料透過 nginx 轉交給 prerender.io
一直回覆我 http status code 302 (redirect)
仔細研究以後才發現

因為機器透過 Amazon web service 的 ACM(AWS Certificate Manager) 將 ssl 證書掛在 load balance
443 port 指向 80 port ,prerender.io 在官方給的 nginx 部署範例是這樣的

程式碼的 40 行,當你確認 request 是 crawler 時,會將需求轉向 prerender.io ,但這邊他是用 $scheme
而這邊的 $scheme 會根據你目前的 80 port return “http:” , 然後你就會提交給 prerender.io 需要 render url 是 http://yourdomain.com
但是你又很剛好的跟我一樣設置強制將 http 轉向 https , prerender.io 自然就 return 給你 302 並且無法順利 render 你的 url ..

 

解法很容易拉 把你的 $scheme 直接寫成 https 就好了 …

 

這問題我整整找了一個下午才找到答案  …

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *