標籤:錯誤 拒絕 長度 org 工具 ref ons 輸入 eric
如果向您的伺服器發出了某項請求要求顯示您網站上的某個網頁(例如,當使用者通過瀏覽器訪問您的網頁或在 Googlebot 抓取該網頁時),那麼,您的伺服器會返回 HTTP 狀態碼以響應該請求。
此狀態碼提供了有關請求狀態的資訊,且為 Googlebot 提供了有關您網站和請求的網頁的資訊。
一些常見的狀態碼為:
200 – 伺服器成功返回網頁404 – 請求的網頁不存在503 – 伺服器暫時不可用以下提供了 HTTP 狀態碼的完整列表。點選連結可瞭解詳細資料。您也可以訪問有關 HTTP 狀態碼的 W3C 頁來瞭解詳細資料。
1xx(臨時響應)
用於表示臨時響應並需要要求者執行操作才能繼續的狀態碼。
|
|
100(繼續) |
要求者應當繼續提出請求。伺服器返回此代碼則意味著,伺服器已收到了請求的第一部分,現正在等待接收其餘部分。 |
101(切換協議) |
要求者已要求伺服器切換協議,伺服器已確認並準備進行切換。 |
2xx(成功)
用於表示伺服器已成功處理了請求的狀態碼。
|
|
200(成功) |
伺服器已成功處理了請求。通常,這表示伺服器提供了請求的網頁。如果您的 robots.txt 檔案顯示為此狀態,那麼,這表示 Googlebot 已成功檢索到該檔案。 |
201(已建立) |
請求成功且伺服器已建立了新的資源。 |
202(已接受) |
伺服器已接受了請求,但尚未對其進行處理。 |
203(非授權資訊) |
伺服器已成功處理了請求,但返回了可能來自另一來源的資訊。 |
204(無內容) |
伺服器成功處理了請求,但未返回任何內容。 |
205(重設內容) |
伺服器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求要求者重設文檔視圖(例如清除表單內容以輸入新內容)。 |
206(部分內容) |
伺服器成功處理了部分 GET 請求。 |
3xx(已重新導向)
要完成請求,您需要進一步進行操作。通常,這些狀態碼是永遠重新導向的。Google 建議您在每次請求時使用的重新導向要少於 5 個。您可以使用網站管理員工具來查看 Googlebot 在抓取您已重新導向的網頁時是否會遇到問題。
診斷下的抓取錯誤頁中列出了 Googlebot 由於重新導向錯誤而無法抓取的網址。
|
|
300(多種選擇) |
伺服器根據請求可執行多種操作。伺服器可根據要求者 (User agent) 來選擇一項操作,或提供巨集指令清單供要求者選擇。 |
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 協議版本。 |
Nginx 499 錯誤引發的思考~~
Nginx日誌錯誤資訊如下:
?[Copy to clipboard]View Code LOG
58.212.81.150 - - [21/Oct/2010:03:58:12 -0500] "GET /attachment/view/32807_120x120.jpg HTTP/1.1" 499 0 "http://www.theledlamps.com/" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11" |
rfc2616中,400~500間的錯誤碼僅定義到了417,所以499應該是nginx自己定義的。後來想到讀讀nginx代碼,疑問立解。
進入nginx編譯目錄下,輸入如下命令
查看原始碼 列印協助
1 |
[[email protected] nginx-0.7.67]# grep 499 . -r |
得到如下資訊:
?[Copy to clipboard]View Code BASH
./CHANGES: with 499 status code. ./CHANGES: *) Change: now the 499 error could not be redirected using an ./src/http/ngx_http_special_response.c: ngx_null_string, ./src/http/ngx_http_request.h:#define NGX_HTTP_CLIENT_CLOSED_REQUEST 499 ./src/http/ngx_http_core_module.c: if(err->status == NGX_ERROR || err->status == 499){ ./CHANGES.ru: ???Œ? ????499. ./CHANGES.ru: *) ????: Л?? 499 ?х? υ?? х?ρ?—???я??? |
根據找到的資訊查看/src/http/ngx_http_special_response.c 這個檔案,裡面定義了不少http錯誤碼以及相應的返回。注意到下面的注釋。
?[Copy to clipboard]View Code C
ngx_string(ngx_http_error_495_page), ngx_string(ngx_http_error_496_page), ngx_string(ngx_http_error_497_page), ngx_string(ngx_http_error_404_page), ngx_null_string, |
可以看到,499對應的是 “client has closed connection”。這很有可能是因為伺服器端處理的時間過長,用戶端“不耐煩”了。要解決此問題,就需要在程式上面做些最佳化了。
除了499,nginx還定義了495/496/497/498 這幾個Status Codes,相應的意義也在上面的注釋中可以看到。開源的東西,可以隨時翻看源碼,這一點很棒。
轉自
http 錯誤碼解釋 && nginx 自訂錯誤_mandahang_新浪部落格
http://blog.sina.com.cn/s/blog_3f12afd00100u5oc.html
http 錯誤碼解釋 && nginx 自訂錯誤【轉】