3xx HTTP狀態碼的終極指南

chuckQu發表於2023-01-10

前言

如果你在管理一些網站,那麼對HTTP重定向的理解對於可靠的網站效能至關重要。在這篇文章中,我們將全面瞭解一下3xx HTTP狀態碼,從這裡你可以瞭解它們是如何工作的,如何更好地管理它們,以及它們對SEO的影響。

HTTP重定向的目的

URL重定向涉及到一個網頁地址被對映到另一個。網站需要重定向的原因有很多。

比如說,遷移到一個新的域名是使用URL重定向的首要原因之一。有時,你以前的域名太長、太複雜,導致難以記住,或者某種侵權活動迫使你從一個域名轉移到另一個域名。

讓我們具體看看重定向頁面的其他原因:

  • 轉發多個域名:當同時擁有多個域名時,需要永久的HTTP重定向,以引導網際網路使用者和搜尋引擎到同一地址。
  • 識別破損連結:404頁面可以透過Google Search Console來識別。覆蓋報告將給你提供所有連結的詳細資訊,以便在重定向的幫助下進行修復。
  • 修復破損連結:在識別破損連結後,你可以將其重定向到首頁。然而,一個更好的選擇是將每個破損的URL重定向到一個具有相同(類似)內容的新頁面。
  • 頁面的新地址:如果你的原網站有訪問量很高的頁面,在SERP中排名很高,重定向將幫助你把這個URL對映到新的地址。對於這種情況,你必須確定你用於重定向的舊網頁沒有消失。
  • 需要刪除頁面:為所有你需要刪除的頁面建立HTTP重定向,確保不要用404錯誤來嚇唬訪客。重定向將向谷歌或其他搜尋引擎發出訊號,舊連結的連結值應分配給重定向的URL。

除此之外,還有一些其他場景值得考慮。如果你需要簡化和跟蹤顯示廣告或應對緊急情況,重定向將派上用場。重定向有助於營銷人員監測廣告反響。同時,網路管理員可以在重定向的幫助下修復任何失敗的連結活動。

總之,谷歌對重定向的定義是控制抓取和索引。谷歌搜尋中心將HTTP重定向解釋為進行無縫過渡的做法,透過幾個URL訪問一個頁面,糾正過時的URL,並將使用者從刪除的頁面重定向到新的頁面,從而排除404錯誤。

網路協議基礎知識

網際網路上用於傳輸資料和資訊控制的託管伺服器的基本協議被稱為HTTP。超文字傳輸協議允許全球資訊網的網際網路使用者和伺服器之間維護網站以及提供通訊。

HTTP是用於不同型別資料的資訊系統的協議:分散式、超媒體和協作式。HTTP的主要目標是提供基於網際網路的無縫互動。

這種請求-響應協議透過TCP連線工作。傳輸控制協議允許網際網路與全球資訊網上代表的任何可用識別資源進行互動。使用者與網頁、影片和資訊伺服器的通訊是透過HTTP進行的。這樣,客戶可以獲得對網頁的訪問。

值得注意的是,超文字傳輸協議使用代理。它們是用於內容識別和分析的特殊用途的過濾器。HTTP代理防止使用者低質量地傳送和顯示檔案:

  • 間諜軟體的文字和影像
  • 畸形的多媒體檔案
  • 網路攻擊驅動的音訊檔案

HTTP客戶端是用來保護使用者的瀏覽器的。它向伺服器傳送請求資訊。HTTP服務端負責HTTP響應連線。HTTP代理的原理可以用以下方式來表示:

http-proxy.png

HTTP協議的主要優點是:

  • HTTP協議提供了先進的定址方案。所有的IP地址在全球資訊網上都變得容易識別和確認。
  • 實現了線上資源的靈活性和可訪問性。HTTP為擴充套件和外掛下載提供了機會。這樣,相關的資料就會顯示出來。

HTTP共有九種請求方法來執行不同的網路操作。

請求 描述
PUT 負責修改現存的網路資源。該請求也允許建立新的URL。
HEAD 建立一個特殊用途資源的請求,不需要任何主體內容。
POST 負責將現有資源修改的內容新增到新的網頁上。
DELETE 刪除指定資源。
GET 請求完整資源。
TRACE 顯示使用者訪問的網路資源的任何更新和變化。
OPTIONS 展示使用者可以訪問的HTTP方法列表。
CONNECT 負責將基於請求的連線轉換為TCP/IP隧道。
PATCH 使得對網路資源進行部分修改成為可能。

狀態碼

HTTP狀態碼是決定伺服器響應的特殊元素。有必要了解每一個HTTP狀態碼,以明確問題並解決它們。

有五類狀態碼需要考慮。有資訊響應、成功、重定向、客戶錯誤和服務錯誤五種類別。第一個數字表示HTTP狀態碼的類別。讓我們仔細看看每個響應的類別:

  • 1xx資訊響應:這類狀態碼告知了請求的接收情況。它意味著步驟繼續。比如說,100表示continue。
  • 2xx成功:這些狀態碼是關於對請求的理解和接收。比如說,200表示OK。
  • 3xx重定向:這類狀態碼錶示需要一些特殊目的的動作來完成請求。比如說,301表示redirection。
  • 4xx客戶端錯誤:這類響應狀態碼標誌著該請求不能進行。此外,它可能意味著請求中存在錯誤的語法。比如說,400表示bad request。
  • 5xx服務端錯誤:這類HTTP狀態碼是關於由伺服器的失敗處理造成的,不成功的伺服器響應。比如說,500表示internal error。

值得注意的是,一些狀態碼和錯誤對SEO有直接影響。雖然1xx和2xx對搜尋引擎最佳化影響不大(有200響應是最好的做法),但3xx、4xx和5xx的會對抓取和索引你的網頁產生負面影響。你應該始終注意解決4xx和5xx狀態碼和錯誤,因為這對你網站的整體排名非常有害。

HTTP 300狀態碼也許對SEO扮演核心角色。這類狀態碼負責將所有的SEO價值從你的舊網址傳遞到新網址。因此,有必要挖掘每個3xx狀態碼的含義(臨時或永久重定向、代理、多重選擇,等等)。

3xx狀態碼

3xx狀態碼錶示不同型別的HTTP重定向。營銷人員通常使用3xx狀態碼來監測和分析使用者體驗、網站使用者的行為以及網站的SEO效能。DataTracker資源確定了由3xx HTTP狀態碼衍生的四種重定向型別:

  • 像301,302,307這樣的重定向表示目標資源已經被分配了一個新的URL。
  • 300重定向提供多種選擇(根據請求選擇匹配的網路資源)。
  • 303重定向提供了對已完成請求的間接響應,如果Location欄位可以識別的話。
  • 304重定向提供HTTP重定向到之前快取的結果中。

3xx狀態碼出現在有必要表明伺服器的重定向響應時。3xx HTTP狀態碼的另一個例子是為被刪除的頁面保持其排名。此外,當有必要修復破損的URL時,重定向也會派上用場。

當錯誤發生時,重定向不期望看到其他響應碼。例如,重定向不能解決1xx、4xx、5xx的問題(Not Implemented = 501;Bad Gateway = 502;Unprocessable Entity = 420)。

下面就讓我們仔細看看每個3xx狀態碼,瞭解它們對SEO和網站排名的影響。

300 Multiple Choices

這些狀態碼通常用於REST APIs。給予瀏覽器多種選擇,它應該在滿足請求的資源中進行選擇。例如,如果你有多個影片格式選項或不同的副檔名需要指定,300狀態碼就會派上用場。

使用300重定向另一個原因是,為了滿足內容協商的要求。伺服器通知使用者代理可用的表示型別供其選擇。仔細看一下這個例子,看看300重定向的作用。

HTTP/1.1 300 Multiple Choices
Server: curveball/0.3.1
Access-Control-Allow-Headers: Content-Type,User-Agent
Access-Control-Allow-Origin: *
Link: </foo> rel="alternate"
Link: </bar> rel="alternate"
Content-Type: text/html
Location: /foo

你可以在程式碼中看到/foo/bar。當兩個選項都可以選擇時,地址就被指定了。

301 Moved Permanently

還有一個狀態碼通常用於REST APIs中。該狀態碼主要作用是,永久性的重定向。如果你需要在短時間內使用重定向,301重定向就不適合。在301 HTTP狀態碼的幫助下,網際網路使用者和搜尋引擎都被帶到一個新的URL。該型別的最佳重定向方案是當前一個頁面不打算恢復的時候。

讓我們藉助一個真實的案例來解釋永久HTTP重定向的概念:

  • FAQ頁面託管在子域名下面(https://faq.website.com)。
  • 你決定移動FAQ頁面到子資料夾下(https://www.website.com/faq/)。
  • 如果子域名被刪除了,404頁就會損害網站的SEO。
  • 使用者體驗也受到影響,所以重定向是必須的。
  • 放置一個301重定向,防止使用者訪問舊的URL。
  • 搜尋引擎也將被重定向到新的FAQ頁面。

讓我們再看個永久性重定向的例子(301重定向)。在這裡我們可以看到一個301 HTTP狀態碼,用於將使用者和搜尋引擎重定向到新的地址。

status.png

程式設計師經常使用.htaccess檔案來實現不同型別的重定向,包括301重定向。有兩種301重定向的方法需要考慮到:

  • 整個域名可以被重定向到一個新的網站。在Redirect 301後新增你感興趣的域名:

    Redirect 301 /[http://www.website.com/](http://www.website.com/)
    
  • 如果你只想重定向一個頁面,有必要在Redirect 301後面指定舊的URL:

    Redirect 301 /oldurl/ [http://www.website.com/newurl/](http://www.website.com/newurl/)
    

這裡要提到的是,各種編碼方法需要不同的重定向實現。

需要注意的是,JavaScript對於SEO實踐來說遠不是最佳選擇。谷歌有時會對JavaScript中的301重定向進行錯誤的解釋。如果你對SEO友好的永久重定向感興趣,最好選擇上面列出的方法之一。

302 Found

在REST API中還有一個比較常用的狀態碼。與永久的301重定向相比,302重定向是在需要一些臨時重定向時使用。比如說,你知道這個URL的改變,並不久後重定向,或者以前的頁面會在某個時間點恢復。還有一種情況是,你要刪除舊的頁面,但你需要重定向所有的流量,並儲存臨時URL上的排名分數。使用302狀態碼的其他原因包括:

  • 遷移到一個新的,但卻是臨時的域名
  • 更改網站結構(臨時地)

值得注意的是,302重定向的實施方法與301的實施方法相同。出於SEO友好的目的,避免使用JavaScript編碼的建議在這裡也適用。

status.png

比如說,在上面的圖片中,我們可以看到302狀態碼是如何用於網站的臨時地址。請注意,你也可以將這種型別的重定向用於你的網站/頁面重新設計,一些測試,促銷活動的執行,以及其他短期活動和安排。

303 See Other

該HTTP狀態碼允許REST API以引用的形式向客戶傳送建議。303重定向的一個顯著特點是其無快取效能。但值得一提的是,重定向的第二個會話將被快取。

303狀態碼對SEO來說並不重要。但是,當另一個URL可以被推薦而不是一個已經訪問過的URL時,它可以幫助提高使用者友好度並實現營銷目的。

304 Not Modified

這個狀態碼和上面列出的其他3xx狀態碼一樣,常用於REST APIs中。當不需要重新傳輸時,可以使用該狀態碼。如果頁面還沒有被修改,也可以使重定向無快取。

讓我們透過一個304重定向的例子來仔細看看。該狀態碼是在請求方法和請求URL下面指定的。

status.png

305 Use Proxy

該HTTP狀態碼目前已被廢棄。一些瀏覽器不允許使用這種型別的重定向。例如,Mozilla Firefox和Internet Explorer出於安全原因阻止使用者使用305重定向。主要是因為用於請求和提供訪問網路資源的單一代理。當涉及到一些瀏覽器時,這種方法是有風險的。

306 Switch Proxy(未使用)

程式設計師現在不使用這個狀態碼了。它的主要思想是當一些特殊目的的請求發生時有機會切換代理。如果編碼中出現了這種型別的重定向,使用者將預設返回到指定的代理。

307 Temporary Redirect

這個HTTP狀態碼與302狀態碼非常相似。這就是為什麼重定向所需的實現方法與301和302是一樣的。讓我們來挖掘一下307和302的區別,因為它們都是關於臨時的HTTP重定向。關於307重定向,有兩種意見需要考慮:

  • 307和302重定向都提供了內容的臨時重定向。當發生一些快速變化時,建議使用這兩個狀態碼其中的一個。
  • 302和307臨時重定向是不同的。302狀態碼在改變HTTP方法方面值得注意。同時,307重定向沒有改變HTTP方法。

這意味著302重定向中GET請求方法的任何改變都會導致網路上不可預測的結果。這不會發生在307重定向中。下圖是一個使用307臨時重定向的例子。

status.png

308 Permanent Redirect

這個狀態碼被認為是實驗性的,但它的語義與301永久重定向相同。308和301重定向的唯一區別是是否可以修改HTTP方法。301重定向允許使用者代理修改使用的HTTP方法,而308狀態碼則意味著重定向的HTTP請求方法是不可改變的。

status.png

308 HTTP狀態碼是相當新的,因為它在2015年才被引入。一些瀏覽器仍然無法識別308重定向,並向使用者顯示空的頁面,而不是重定向的頁面(例如,Internet Explorer 11)。這就是為什麼301永久重定向是最好的,因為它有更好的支援和對SEO的友好。308HTTP狀態碼的支援度少的可憐,搜尋爬蟲並不總是能識別它。

重定向對比

300重定向對SEO很重要。如果你需要從一箇舊頁面轉移到另一個頁面,並且不想浪費它的排名,建議使用臨時或永久重定向。你可以使用以下幾個HTTP 3xx狀態碼:

  • 301或308永久重定向
  • 302,303,307臨時重定向

當涉及到臨時和永久重定向時,301和302 HTTP狀態碼總是被優先考慮。但這些HTTP 3xx狀態碼之間是有區別的。下面是第一種情況。你已經決定永遠刪除你的舊網站。但是這個URL經常被訪問,有一個建議是使用301永久重定向,以保持你的網站排名。

第二種情況是當你重組你的網站並在一些短期內儲存你的SERP。該網站將失去SEO價值。搜尋引擎會保留你的舊網址,但在重定向後開始索引你的新頁面。如果你確定會回到舊的URL,最好使用302重定向(臨時)。

301 vs 302

引數對比 301 302
重定向型別 永久 臨時
什麼時候使用 用於重定向即將被刪除的舊網頁。 用於重定向將被恢復的舊網頁。
重定向語法 被改變 被改變

永久重定向

引數對比 301 308
重定向型別 永久 永久
什麼時候使用 用於重定向即將被刪除的舊網頁。 用於重定向將被刪除的舊網頁。
特別之處 更適合於SEO;被爬蟲很好地識別;用於永久重定向;對重定向的頁面有充分的連結權重。 實驗性的;支援有限;用於避免對GET方法的錯誤改變。
重定向語法 被改變 不被改變

301對谷歌來說有更強的規範性。同時,谷歌團隊的代表表示,308和301 HTTP狀態碼提供了相同的重定向和SEO驅動的屬性。

臨時重定向

引數對比 302 307
重定向型別 臨時 臨時
什麼時候使用 用於重定向將被恢復的舊網頁。 用於重定向將被恢復的舊網頁。
特別之處 用於臨時重定向;被搜尋爬蟲很好地識別。 更適合於SEO;用於避免對GET方法的錯誤改變;將客戶的請求轉移到另一個主機上。
重定向語法 被改變 不被改變

需要哪種狀態碼

必不可少的HTTP 300狀態碼是301、302和307,因為它們用於臨時和永久重定向。這些狀態碼被建議用於確保SEO友好的網站遷移、URL變更、網站重組和更新、域名變更或網站頁面的短期重新發布活動。

值得注意的是,重定向的過程有一些要求,以滿足谷歌的排名標準。主要有五個提示要記住:

  • 只在301重定向後轉移到一個新的域名。谷歌不喜歡重複的內容,並會因為這個錯誤而懲罰你。
  • 在你的域名的http://http://www版本之間設定301、302和307重定向。這對你的搜尋引擎最佳化至關重要。
  • 考慮谷歌對重定向鏈的偏好。不要連續超過兩個重定向。在過度使用重定向的情況下,爬蟲將停止訪問你的網站。
  • 使用有用的工具,如谷歌搜尋控制檯、HTTP狀態、WTOOLS HTTP檢查器、重定向檢查器或SE排名網站審計工具,以簡化HTTP狀態碼監測和實施及時更改。
  • 如果你要從一個網站遷移到另一個網站,請重新規劃你的SEO戰略。考慮關鍵詞搜尋、新的內容營銷策略和其他基本準備工作。

以上就是本文的所有內容,如果對你所有幫助,歡迎點贊、收藏、轉發~

相關文章