本頁使用了標題或全文手工轉換

HTTP 301

維基百科,自由的百科全書
跳至導覽 跳至搜尋

301 Move PermanentlyHTTP協定中的一個狀態碼(Status Code)。可以簡單地理解為該資源已經被永久改變了位置[1],通常會傳送HTTP Location重新導向到正確的新位置。

返回301狀態碼進行跳轉被Google認為是將網站地址由 HTTP 遷移到 HTTPS 的最佳方法。[2]

定義[編輯]

根據定義: [3][4][5]

  • 如果一個客戶端有連結編輯能力,其應當把所有的參照連結重新導向到新的URL上。
  • 這個響應代碼是可以被緩衝記憶體的。[6][7]
  • 除非請求方法是 HEAD, 否則響應實體應該包含一個小型的超文字,標註一個超連結到新的URL。
  • 如果是除了 GET 和 HEAD 之外的請求方法,客戶端必須在重新導向之前詢問用戶。

例子[編輯]

客戶端發出請求:

GET /blog HTTP/1.1
Host: www.example.com

伺服器回應,不帶Cache-Control頭部:

HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp

伺服器回應,帶Cache-Control頭部:

HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp
Cache-control: private; max-age=600

客戶端實現問題[編輯]

當某些HTTP/1.0客戶端收到該狀態碼時,可能會將POST方法改為GET方法,繼續向新地址發出請求,這是錯誤的實現——故而後續標準引入了HTTP 307[8]

搜尋引擎最佳化[編輯]

由於該代碼表示頁面地址發生了較長久的改變,故Bing[9]Google[10]等搜尋引擎都推薦使用301重新導向,以改變搜尋引擎中的實際頁面地址。

相關條目[編輯]

參考文獻[編輯]

  1. ^ HTTP/1.1: Status Code Definitions. 
  2. ^ Secure your site with HTTPS. Google 用戶中心. Google. [6 February 2016]. 
  3. ^ T., Fielding, Roy; Tim, Berners-Lee,; Henrik, Frystyk,. Hypertext Transfer Protocol -- HTTP/1.0 (英語). 
  4. ^ C., Mogul, Jeffrey; Jim, Gettys,; Tim, Berners-Lee,; Henrik, Frystyk,. Hypertext Transfer Protocol -- HTTP/1.1. IETF (英語). 
  5. ^ J., Leach, Paul; Tim, Berners-Lee,; C., Mogul, Jeffrey; Larry, Masinter,; T., Fielding, Roy; James, Gettys,. Hypertext Transfer Protocol -- HTTP/1.1 (英語). 
  6. ^ How long do browsers cache HTTP 301s?. StackOverflow. 
  7. ^ Mark, Nottingham,; Roy, Fielding,; Julian, Reschke,. Hypertext Transfer Protocol (HTTP/1.1): Caching (英語). 
  8. ^ Roy, Fielding,; Julian, Reschke,. Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content (英語). 
  9. ^ How to Use the Site Move Tool. Bing Webmaster Tools. 
  10. ^ Change page URLs with 301 redirects - Search Console Help. Google Help (英語). 

外部連結[編輯]