各類 HTTP 返回狀態代碼詳解

分類:編程 時間:2017-03-07

一、HTTP狀態碼

如果某項請求發送到您的服務器要求顯示您網站上的某個網頁(例如,用戶通過瀏覽器訪問您的網頁或 Googlebot 抓取網頁時),服務器將會返回 HTTP 狀態代碼以響應請求。

此狀態代碼提供關於請求狀態的信息, 告訴 Googlebot 關於您的網站和請求的網頁的信息。

一些常見的狀態代碼包括:

  • 200 – 服務器成功返回網頁
  • 404 – 請求的網頁不存在
  • 503 – 服務器暫時不可用

下面提供 HTTP 狀態代碼的完整列表。 點擊鏈接可了解詳情。 您也可以訪問有關 HTTP 狀態代碼的 W3C 網頁以獲得更多信息 。

1xx:請求收到,繼續處理
2xx:操作成功收到,分析、接受
3xx:完成此請求必須進一步處理
4xx:請求包含一個錯誤語法或不能完成
5xx:服務器執行一個完全有效請求失敗

1xx (臨時響應)
表示臨時響應並需要請求者繼續執行操作的狀態代碼。

代碼 說明

100(繼續) 請求者應當繼續提出請求。 服務器返回此代碼表示已收到請求的第一部分,正在等待其余部分。 101(切換協議) 請求者已要求服務器切換協議,服務器已確認並準備切換。

2xx (成功)

表示服務器成功處理了請求的狀態代碼。

代碼 說明

200(成功) 服務器已成功處理了請求。 通常,這表示服務器提供了請求的網頁。 如果針對您的 robots.txt 文件顯示此狀態,則表示 Googlebot 已成功檢索到該文件。 201(已創建) 請求成功並且服務器創建了新的資源。 202(已接受) 服務器已接受請求,但尚未處理。 203(非授權信息) 服務器已成功處理了請求,但返回的信息可能來自另一來源。 204(無內容) 服務器成功處理了請求,但沒有返回任何內容。 205(重置內容) 服務器成功處理了請求,但沒有返回任何內容。 與 204 響應不同,此響應要求請求者重置文檔視圖(例如,清除表單內容以輸入新內容)。 206(部分內容) 服務器成功處理了部分 GET 請求。

3xx (重定向)
要完成請求,需要進一步操作。 通常,這些狀態代碼用來重定向。 Google 建議您在每次請求中使用重定向不要超過 5 次。 您可以使用網站管理員工具查看一下 Googlebot 在抓取重定向網頁時是否遇到問題。 診斷 下的網
絡抓取 頁面列出了由於重定向錯誤而導致 Googlebot 無法抓取的網址。

代碼 說明

300(多種選擇) 針對請求,服務器可執行多種操作。 服務器可根據請求者(用戶代理)選擇一項操作,或提供操作列表供請求者選擇。 301(永久移動) 請求的網頁已永久移動到新位置。 服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。 您應使用此代碼告訴 Googlebot 某個網頁或網站已永久移動到新位置。 302(暫時移動) 服 務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。 此代碼與響應 GET 或 HEAD 請求的 301 代碼類似,會自動將請求者轉到不同的位置,但您不應使用此代碼來告訴 Googlebot 某個網頁或網站已經移動,因為 Googlebot 會繼續抓取原有位置並編入索引。 303(查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,服務器返回此代碼。 對於除 HEAD 之外的所有請求,服務器會自動轉到其他位置。 304(未修改) 自從上次請求後,請求的網頁未修改過。服務器返回此響應時,不會返回網頁內容。如果網頁自請求者上次請求後再也沒有更改 過,您應當將服務器配置為返回此響應(稱為 If-Modified-Since HTTP 標頭)。 由於服務器可以告訴 Googlebot 自從上次抓取後網頁沒有更改過,因此可節省帶寬和開銷

305(使用代理) 請求者只能使用代理訪問請求的網頁。 如果服務器返回此響應,還表示請求者應使用代理。 307(暫時重定向) 服 務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。 此代碼與響應 GET 和 HEAD 請求的 301 代碼類似,會自動將請求者轉到不同的位置,但您不應使用此代碼來告訴 Googlebot 某個頁面或網站已經移動,因為 Googlebot 會繼續抓取原有位置並編入索引。

4xx(請求錯誤)
這些狀態代碼表示請求可能出錯,妨礙了服務器的處理。

代碼 說明

400(錯誤請求) 服務器不理解請求的語法。 401(未授權) 請求要求身份驗證。 對於需要登錄的網頁,服務器可能返回此響應。 403(禁止) 服務器拒絕請求。 如果您看到 Googlebot 在嘗試抓取您網站上的有效網頁時收到此狀態代碼(可以在 Google 網站管理員工具診 斷 下的網絡抓取 頁面上看到此信息),可能是您的服務器或主機拒絕 Googlebot 訪問。 404(未找到) 服務器找不到請求的網頁。 例如,如果請求服務器上不存在的網頁,服務器通常會返回此代碼。如果您的網站上沒有 robots.txt 文件,而您在 Google 網站管理員工具”診斷”標簽的 robots.txt
頁 上看到此狀態,那麽這是正確的狀態。 但是,如果您有 robots.txt 文件而又看到此狀態,則說明您的 robots.txt 文件可能命名錯誤或位於錯誤的位置 (該文件應當位於頂級域名,名為 robots.txt)。

如果您看到有關 Googlebot 嘗試抓取的網址的此狀態(在”診斷”標簽的 HTTP 錯誤頁上),則表示 Googlebot 追蹤的可能是另一個頁面的無效鏈接(是舊鏈接或輸入有誤的鏈接)。

405(禁用的方法) 禁用請求中指定的方法。 406(不可接受) 無法使用請求的內容特性響應請求的網頁。 407(需要代理授權) 此狀態代碼與 401(未授權)類似,但指定請求者應當授權使用代理。 如果服務器返回此響應,還會指明請求者應當使用的代理。 408(請求超時) 服務器等候請求時發生超時。 409(沖突) 服務器在完成請求時發生沖突。 服務器必須在響應中包含有關沖突的信息。 服務器在響應與前一個請求相沖突的 PUT 請求時可能會返回此代碼,同時會附上兩個請求的差異列表。 410(已刪除) 如果請求的資源已永久刪除,服務器就會返回此響應。 該代碼與 404(未找到)代碼相似,但在資源以前存在而現在不存在的情況下,有時會用來替代 404 代碼。 如果資源已永久刪除,您應當使用 301 指定資源的新位置。 411(需要有效長度) 服務器不接受不含有效內容長度標頭字段的請求。 412(未滿足前提條件) 服務器未滿足請求者在請求中設置的其中一個前提條件。 413(請求實體過大) 服務器無法處理請求,因為請求實體過大,超出服務器的處理能力。 414(請求的 URI 過長) 請求的 URI(通常為網址)過長,服務器無法處理。 415(不支持的媒體類型) 請求的格式不受請求頁面的支持。 416(請求範圍不符合要求) 如果頁面無法提供請求的範圍,則服務器會返回此狀態代碼。 417(未滿足期望要求) 服務器未滿足”期望”請求標頭字段的要求。

5xx (服務器錯誤)
這些狀態代碼表示服務器在嘗試處理請求時發生內部錯誤。 這些錯誤可能是服務器本身的錯誤,而不是請求出錯。

代碼 說明

500(服務器內部錯誤) 服務器遇到錯誤,無法完成請求。 501(尚未實施) 服務器不具備完成請求的功能。 例如,服務器無法識別請求方法時可能會返回此代碼。 502(錯誤網關) 服務器充當網關或代理,從上遊服務器收到無效響應。 503(服務不可用) 服務器目前無法使用(由於超載或停機維護)。 通常,這只是暫時狀態。 504(網關超時) 服務器充當網關或代理,但沒有及時從上遊服務器收到請求。 505(HTTP 版本不受支持) 服務器不支持請求中所用的 HTTP 協議版本。

英文版:

100:Continue
101:Switching Protocols
102:Processing

200:OK
201:Created
202:Accepted
203:Non-Authoriative Information
204:No Content
205:Reset Content
206:Partial Content
207:Multi-Status

300:Multiple Choices
301:Moved Permanently
302:Found
303:See Other
304:Not Modified
305:Use Proxy
306:(Unused)
307:Temporary Redirect

400:Bad Request
401:Unauthorized
402:Payment Granted
403:Forbidden
404:File Not Found
405:Method Not Allowed
406:Not Acceptable
407:Proxy Authentication Required
408:Request Time-out
409:Conflict
410:Gone
411:Length Required
412:Precondition Failed
413:Request Entity Too Large
414:Request-URI Too Large
415:Unsupported Media Type
416:Requested range not satisfiable
417:Expectation Failed
422:Unprocessable Entity
423:Locked
424:Failed Dependency

500:Internal Server Error
501:Not Implemented
502:Bad Gateway
503:Service Unavailable
504:Gateway Timeout
505:HTTP version Not Supported
507:Insufficient Storage

200號狀態碼

220.181.32.30 - - [02/Sep/2008:00:01:23 +0800] "GET /article/0572/72570.shtml HTTP/1.1" 200 28361 "-" "Baiduspider+(+http://www.baidu.com/search/spider.htm)"

服務器日誌中的200表示使用GET傳遞方式網頁72570.shtml下載成功。即:當用戶或爬蟲程序向網站服務器發出瀏覽請求時,服務器返回 HTTP 數據流裏包含某種狀態碼,200響應號即狀態碼中的一種,表示本網頁被成功下載。

301號狀態碼

220.181.32.30 - - [02/Sep/2008:00:01:31 +0800] "GET /my/view.php?aid=14183 HTTP/1.1" 301 - "-" "Baiduspider+(+http://www.baidu.com/search/spider.htm)"

服務器日誌中的301表示使用GET傳遞方式動態網頁aid=14183成功跳轉。即:當用戶或爬蟲程序向網站服務器發出瀏覽請求時,服務器返回 HTTP 數據流包含某種狀態碼,301 重定向即狀態碼中的一種,表示本網頁永久性轉移到另一個地址。實際操作中我們可以將多個域名指向同一個網址,這也是搜索引擎唯一認可的一種網站轉向的方式。

二、404狀態碼

220.181.32.30 - - [02/Sep/2008:00:01:51 +0800] "GET /writing HTTP/1.1" 404 4459 "-" "Baiduspider+(+http://www.baidu.com/search/spider.htm)"

出現404狀態碼就證 明有URL地址的網頁瀏覽不到。很多時候由於網站的改版,使很多舊版網站url地址失效。這是你需要建立404狀態頁來保證你網站通暢,能夠達到一種回路 的效果。切記404狀態頁需要單獨設計,不能直接在服務器端直接跳轉回首頁。否則,搜索引擎會大量抓取網站首頁失誤當成404頁處理。

對HTTP404狀態碼的深度理解

HTTP 404 錯誤意味著鏈接指向的網頁不存在,即原始網頁的URL失效,這種情況經常會發生,很難避免,比如說:網頁URL生成規則改變、網頁文件更名或移動位置、導 入鏈接拼寫錯誤等,導致原來的URL地址無法訪問;當Web 服務器接到類似請求時,會返回一個404 狀態碼,告訴瀏覽器要請求的資源並不存在。但是,Web服務器默認的404錯誤頁面,無論Apache還是IIS,均十分簡陋、呆板且對用戶不友好,無法 給用戶提供必要的信息以獲取更多線索,無疑這會造成用戶的流失。

因此,很多網站均使用自定義404錯誤的方式以提供用戶體驗避免用戶流失。一般而言,自定義404頁面通用的做法是在頁面中放置網站快速導航鏈接、搜索框以及網站提供的特色服務,這樣可以有效的幫助用戶訪問站點並獲取需要的信息。

HTTP404對SEO的影響

自 定義404錯誤頁面是提供用戶體驗的很好的做法,但在應用過程中往往並未註意到對搜索引擎的影響,譬如:錯誤的服務器端配置導致返回“200”狀態碼或自 定義404錯誤頁面使用Meta Refresh導致返回“302”狀態碼。正確設置的自定義404錯誤頁面,不僅應當能夠正確地顯示,同時,應該返回“404”錯誤代碼,而不是 “200”或“302”。雖然對訪問的用戶而言,HTTP狀態碼究竟是“404”還是“200”來說並沒有什麽區別,但對搜索引擎而言,這則是相當重要 的。


1.自定義404錯誤頁返回“200”狀態碼

當搜索引擎蜘蛛在請求某個URL地址得到“404”狀態回應時,即知道該 URL地址已經失效,便不再索引該網頁,並向數據中心反饋將該URL地址表示的網頁從索引數據庫中刪除,當然,刪除過程有可能需要很長時間;而當搜索引擎 得到“200”狀態回應時,則會認為該url地址是有效的,便會去索引,並會將其收錄到索引數據庫,這樣的結果便是這兩個不同的url地址具有完全相同的 內容:自定義404錯誤頁面的內容,這會導致出現復制網頁問題。對搜索引擎而言,特別是Google,不但很難獲得信任指數TrustRank,也會大大 降低Google對網站質量的評定。

在使用Google Sitemap,當提交XML格式網站地圖文件時,谷歌管理員工具會驗證網站的身份以確保是網站合法的管理者。驗證方式有兩種:上傳指定名稱的html頁 到網站根目錄或者在網頁meta區域添加一個標識身份的meta標簽。通常是使用上傳html網頁的方式,但谷歌管理員工具卻提示網站根目錄下找不到這個 網頁,這是一個很可怕的問題。

2.自定義404錯誤頁使用Meta Refresh返回“302”狀態碼

常常看到許多網站的 自定義404錯誤頁面采取類似這樣的形式:首先顯示一段錯誤信息,然後,通過Meta Refresh將頁面跳轉到網站首頁、網頁地圖或其他類似頁。根據具體實現方式不同,這類404頁面可能返回“200”狀態碼,也可能返回“302”,但 不論哪種,從SEO技術角度看,均不是一種合適的選擇。

對“200”狀態的情況我們上面已經談過,那麽,當404頁面返回“302”時,搜 索引擎會怎麽對待呢?從理論上說,對“302”錯誤,搜索引擎認為該網頁是存在的,只不過臨時改變了地址,仍然會索引收錄該頁,這樣,同樣會出現類似於 “200”狀態碼時的重復文本問題;其次,以谷歌為代表的主流搜索引擎對302重定向的適用範圍要求越來越嚴格,這類不當使用302重定向的情況存在很大 的風險。

確保自定義404錯誤頁面能夠返回“404”狀態碼

在自定義404錯誤頁面設置完畢後,一定要檢查一下其是不是能夠正確地返回“404”狀態碼。可以使用Server Header檢查工具,輸入一個不存在網頁的url,查看一下HTTP Header的返回情況,確信其返回的是“404 Not found”。

原文地址:http://justcoding.iteye.com/blog/833058


Tags: 瀏覽器 服務器 網頁 網站 信息

文章來源:


ads
ads

相關文章
ads

相關文章

ad