做網站在優化網站時遇到了跳轉404頁面卻返回 200、302狀態的問題,這樣的話搜索引擎會認為這個頁面是一個正常的頁面,但是這個頁面實際是個錯誤頁面,雖然對訪問的用戶而言,HTTP狀態碼是“404”還是“200”並沒有什麼區別,一樣是提高了用戶體驗,但對搜索引擎而言,這則是相當重要的,甚至是致命的。 ...
做網站在優化網站時遇到了跳轉404頁面卻返回 200、302狀態的問題,這樣的話搜索引擎會認為這個頁面是一個正常的頁面,但是這個頁面實際是個錯誤頁面,雖然對訪問的用戶而言,HTTP狀態碼是“404”還是“200”並沒有什麼區別,一樣是提高了用戶體驗,但對搜索引擎而言,這則是相當重要的,甚至是致命的。
當搜索引擎蜘蛛在請求某個錯誤URL地址得到“404”狀態回應時,即知道該URL地址已經失效,便不再索引該網頁,並向數據中心反饋將該URL地址表示的網頁從索引資料庫中刪除,而當搜索引擎對於這個404頁面得到的是“200”狀態回應時,則會認為該url地址是有效的,便會去索引,並會將其收錄到索引資料庫,這樣你的所有錯誤頁面對於搜索引擎來說都是不同url地址內容相同的頁面,這會導致出現大量重覆頁面,會大大降低網站質量的評分,甚至直接降權。
所以正確設置的自定義404錯誤頁面,不僅應當能夠正確地顯示,同時,應該返回“404”錯誤代碼,而不是200或其他的。不僅要告訴用戶該頁面不存在,也要正確的讓搜索引擎知道這是404錯誤頁面而不是一個正常的頁面。
簡單的排查了下,自定義的404頁面沒有添加狀態代碼:
Response.StatusCode = 404;
但是問題依然存在,這個主要是配置了自定義錯誤頁面,程式在訪問錯誤頁面是進行了302跳轉造成。
所以另外需要在全局文件 Global.asax 寫入相關方法:
protected void Application_Error(object sender, EventArgs e) { HttpException erroy = Server.GetLastError() as HttpException; if (erroy != null && erroy.GetHttpCode() == 404) { Server.ClearError(); string path = "~/404.aspx"; Server.Transfer(path); Response.End(); return; } }
這樣問題就解決了。
參考文檔:
asp.net網站404頁面返回200,或者302的解決辦法
你眼中的404頁面未必返回404狀態碼 404頁面如何正確設置