新聞公告News
- 行業最新新聞消息
- 公司最新的活動消息
更多... 新聞公告
自定義404頁返回不當狀態碼
____________________________________________________________________________________________
HTTP 404 錯誤意味著鏈接指向的網頁不存在。在網站建設中想要完全避免這種情況是不可能的,比如說,我們常常需要對網站進行調整、改版,便會有網頁被刪除、改名或移動位置,這時候,雖然相應內容的網頁還存在于網站中,但使用原來的地址訪問則無法訪問。——當然,對這類情況首先要考慮的是為原來頁面地址做301重定向,以盡可能地減小對SEO效果的影響。——其次,在別人建立指向網站的鏈接時,也可能會由于出現拼寫錯誤而使其成為一個無效的鏈接:在網站內找不到相應的內容頁面。
簡單說來,這類無效鏈接是由web服務器自動處理的:當Web 服務器接到類似的數據請求量,會返回一個 404 狀態碼,告訴對方其要請求的資源并不存在。但是,Web服務器默認的404錯誤頁面,無論Apache還是IIS,均十分簡陋、呆板且對用戶不友好,無法給予用戶尋找相應信息的更多線索,用戶看到這類頁面往往最直接的反應并是關閉瀏覽器窗口離開,這在很大程度上給網站造成損失。畢竟,對網站來說,用戶永遠是最重要的資源,以這種方式損失用戶更意味著某種程度的失敗。
這也是許多網站使用自定義404錯誤頁面的原因。通過良好的自定義404頁面,可以包含對網站的相應介紹、用戶可能感興趣的內容鏈接或者網站內容導航鏈接、內容搜索功能等,能夠有效地幫助訪問者找到其欲尋找的內容或相似的內容,提高用戶在網站內瀏覽更多信息的機會。
自定義404錯誤頁面返回“200”或“302”狀態碼
從嚴格的技術角度,網站對404錯誤的處理策略,并不是一個SEO方面的工作,而屬于網站可用性(usability)方面的問題。——當然,如果從廣義的SEO范疇來看,提高網站可用性也屬于SEO的基本操作。——但是,如果自定義404錯誤頁面設置不當,則會極大地影響網站的SEO效果。
在許多朋友的印象中,自定義404錯誤頁面只要能正確顯示,只要能輸入網站內某個并不存在的網頁地址,在瀏覽器中能看到自定義的錯誤信息,便說明設置沒問題。慚愧地說,本人也是抱有這種想法的一員,IT技術點評運行將近一年了,近日因Google更新后排名下降檢查網站時才發現存在類似的錯誤:一個正確設置的404頁面,不僅應當正確地顯示,同時,應該能夠正確返回“404”錯誤代碼,而不是“200”或 “302”。雖然對訪問的用戶而言,HTTP狀態碼究竟是“404”還是“200”來說并沒有什么區別,但對搜索引擎而言,這則是相當重要的。
為什么這么說呢?讓我們先來回顧一下搜索引擎收錄與索引網頁的過程:搜索引擎的Spider向網站服務器發送請求,要求讀取某個網頁,網站服務器接到請求后返回 HTTP 狀態碼響應請求,這些返回的HTTP狀態碼決定著搜索引擎的下一步行動:將該網頁收錄到索引數據庫或者將其從索引數據庫刪除等。
當然,HTTP狀態碼有很多種,分別對應不同的情況,下面就與本文內容相關的幾種作一簡單介紹,更詳細的信息可參考W3C規范:
* 404 : 請求的網頁不存在(不排除日后該鏈接有效的可能性);
* 410 : 請求的網頁不存在(永久);
* 200 : 服務器成功返回網頁
* 302 : 網址臨時重定向(跳轉)
* 301 : 網址永久重定向
需要說明的是,大部分搜索引擎將“404”與“410”狀態同等對待,如Google。(參見Matt Cutts的說明)
當搜索引擎在請求某個Url時得到“404”狀態回應時,便會知道該網頁在網站內不復存在,從而在索引數據庫中將其刪除,——當然,這個刪除過程有可能需要很長時間——而當搜索引擎得到“200”狀態回應時,則會認為該url是有效的,并將其回到到索引數據庫中。
404頁面返回“200”狀態碼的后果
如果網站的自定義404錯誤頁面在url無效時不返回“404”狀態碼而代之以“200”,會發生什么情況呢?很明顯,搜索引擎會認為這個“根本不存在的”網頁在網站內是存在的,這會導致很多問題,影響網站的最終SEO效果。
舉例來說,比如說對“http://www.highdiy.com/a.html”、“http://www.highdiy.com/b.html”這兩個在IT技術點評網站內并不存在的url而言,如果搜索引擎得到的回應狀態碼是“200”,那么,便會將其收錄到索引數據庫,這樣的結果便是這兩個不同的url具有完全相同的內容:自定義404錯誤頁面的內容,這類重復文本(Duplicate Content)的現象對許多搜索引擎而言都是大忌。尤其是考慮到網站中不可能只有這兩個無效鏈接,畢竟在網站建設中,無論網站的內部鏈接還是外部鏈接,總會不可避免地出現許多比如說拼寫錯誤的情況,類似的重復內容會更多。這樣,對搜索引擎而言,特別是Google,不但很難獲得理想的網站信任指數,也會大大降低Google對網站質量的評定。
404錯誤頁使用Meta Refresh帶來的302問題
常常看到許多網站的自定義404錯誤頁面采取類似這樣的形式:首先顯示一段錯誤信息,然后,通過Meta Refresh將頁面跳轉到網站首頁、網頁地圖或其他類似頁。根據具體實現方式不同,這類404頁面可能返回“200”狀態碼,也可能返回“302”,但不論哪種,從SEO的角度看,均不是一種合適的選擇。
對“200”狀態的情況我們上面已經談過,那么,當404頁面返回“302”時,搜索引擎會怎么對待呢?從理論上說,對“302”錯誤,搜索引擎認為該網頁是存在的,只不過臨時改變了地址,仍然會索引收錄該頁,這樣,同樣會出現類似于“200”狀態碼時的重復文本問題;其次,以google為代表的主流搜索引擎對302重定向的適用范圍要求越來越嚴格,這類不當使用302重定向的情況存在很大的風險。
因此,盡量不要在404錯誤頁中使用這類Meta Refresh方法。如果實現希望實現類似的功能,即讓顯示錯誤信息幾(十)秒后跳轉到首頁或其他頁面,可以考慮在404錯誤頁中使用Java Script跳轉。——Java Script對搜索引擎而言是無益同時也無害的。 :)
確保自定義404錯誤頁面能夠返回“404”狀態碼
在自定義404錯誤頁面設置完畢后,一定要檢查一下其是不是能夠正確地返回“404”狀態碼。
檢查的方法也相當簡單,使用本站提供的Server Header檢查工具,或其他類似工具如這個,輸入一個網站內不存在網頁的url,查看一下HTTP Header的返回情況,確信其返回的是“404 Not found”。
發布時間:2009-8-19