讓 nginx 重定向遵循 HTTP
根據 RFC 2616,除了 Location
標頭外,回覆實體(也就是一般使用者看到的網頁)裡面也需要包含重定向的目標。不過基於程式的健壯性原則,瀏覽器等
user agents 會選擇只看
Location
,而且從網頁中找尋正確的連結對程式來說比較困難。然而,一般使用者還是有機會看到重定向的網頁,例如重定向失敗1的時候。
不過 nginx 的錯誤頁面(狀態碼 ≥ 300)其實都沒有附連結。以 302 重定向為例:
幸好 nginx 可以讓我們自訂錯誤頁面,並且支援 SSI。所以我就自己寫了重定向頁面。這樣就有符合 HTTP 標準的重定向頁面了。
該頁面已經搬家囉!
==================
它的新家在 <a href='<!--# echo var="sent_http_location" -->'><!--# echo var="sent_http_location" --></a>。
-
依規定 301, 302 重定向只接受 GET 和 HEAD,因此以其他請求方式就會停在回覆實體。 ↩