Integration by me

你們必曉得真理,真理必叫你們得以自由。

讓 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>
  1. 依規定 301, 302 重定向只接受 GET 和 HEAD,因此以其他請求方式就會停在回覆實體。 

作者:何震邦

我叫何震邦,目前就讀臺北醫學大學醫學系。在漢字不宜的場合,我也叫 Chen-Pang He。我的專長是微積分和數值線性代數。詳細資訊請洽本站的《關於》頁面。