自定義404錯誤頁面是提供用戶體驗的很好的做法,但在應用過程中往往并未注意到對搜…
自定義404錯誤頁面是提供用戶體驗的很好的做法,但在應用過程中往往并未注意到對搜索引擎的影響,譬如:錯誤的服務器端配置導致返回“200”狀態碼或自定義404錯誤頁面使用Meta Refresh導致返回“302”狀態碼。正確設置的自定義404錯誤頁面,不僅應當能夠正確地顯示,同時,應該返回“404”錯誤代碼,而不是“200”或“302”。雖然對訪問的用戶而言,HTTP狀態碼究竟是“404”還是“200”來說并沒有什么區別,但對搜索引擎而言,這則是相當重要的。
(一)自定義404錯誤頁返回“200”狀態碼
當搜索引擎蜘蛛在請求某個URL時得到“404”狀態回應時,即知道該URL已經失效,便不再索引該網頁,并向數據中心反饋將該URL表示的網頁從索引數據庫中刪除,當然,刪除過程有可能需要很長時間;而當搜索引擎得到“200”狀態回應時,則會認為該url是有效的,便會去索引,并會將其收錄到索引數據庫,這樣的結果便是這兩個不同的url具有完全相同的內容:自定義404錯誤頁面的內容,這會導致出現復制網頁問題。對搜索引擎而言,特別是Google,不但很難獲得信任指數TrustRank,也會大大降低Google對網站質量的評定。(為什么會出現返回“200”狀態碼的情況??請參看下面內容“自定義404錯誤頁面的基本原則”)
我一直在使用Google Sitemap,當我們提交XML格式網站地圖文件時,Google會驗證我們的身份以確保是網站合法的管理者。驗證方式有兩種:上傳指定名稱的html頁到網站根目錄或者在網頁meta區域添加一個標識身份的meta標簽。我通常是使用上傳html網頁的方式,但Google卻提示我網站根目錄下找不到這個網頁(實際上我已上傳,并且通過瀏覽器可以訪問),這是一個很可怕的問題
(二)自定義404錯誤頁使用Meta Refresh返回“302”狀態碼
常常看到許多網站的自定義404錯誤頁面采取類似這樣的形式:首先顯示一段錯誤信息,然后,通過Meta Refresh將頁面跳轉到網站首頁、網頁地圖或其他類似頁。根據具體實現方式不同,這類404頁面可能返回“200”狀態碼,也可能返回“302”,但不論哪種,從SEO技術角度看,均不是一種合適的選擇。
對“200”狀態的情況我們上面已經談過,那么,當404頁面返回“302”時,搜索引擎會怎么對待呢?從理論上說,對“302”錯誤,搜索引擎認為該網頁是存在的,只不過臨時改變了地址,仍然會索引收錄該頁,這樣,同樣會出現類似于“200”狀態碼時的重復文本問題;其次,以google為代表的主流搜索引擎對302重定向的適用范圍要求越來越嚴格,這類不當使用302重定向的情況存在很大的風險。
確保自定義404錯誤頁面能夠返回“404”狀態碼
在自定義404錯誤頁面設置完畢后,一定要檢查一下其是不是能夠正確地返回“404”狀態碼。可以使用Server Header檢查工具,輸入一個不存在網頁的url,查看一下HTTP Header的返回情況,確信其返回的是“404 Not found”。