作網站在優化網站時遇到了跳轉404頁面卻返回 200、302狀態的問題,這樣的話搜索引擎會認爲這個頁面是一個正常的頁面,可是這個頁面實際是個錯誤頁面,雖然對訪問的用戶而言,HTTP狀態碼是「404」仍是「200」並無什麼區別,同樣是提升了用戶體驗,但對搜索引擎而言,這則是至關重要的,甚至是致命的。html
當搜索引擎蜘蛛在請求某個錯誤URL地址獲得「404」狀態迴應時,即知道該URL地址已經失效,便再也不索引該網頁,並向數據中心反饋將該URL地址表示的網頁從索引數據庫中刪除,而當搜索引擎對於這個404頁面獲得的是「200」狀態迴應時,則會認爲該url地址是有效的,便會去索引,並會將其收錄到索引數據庫,這樣你的全部錯誤頁面對於搜索引擎來講都是不一樣url地址內容相同的頁面,這會致使出現大量重複頁面,會大大下降網站質量的評分,甚至直接降權。數據庫
因此正確設置的自定義404錯誤頁面,不只應當可以正確地顯示,同時,應該返回「404」錯誤代碼,而不是200或其餘的。不只要告訴用戶該頁面不存在,也要正確的讓搜索引擎知道這是404錯誤頁面而不是一個正常的頁面。asp.net
簡單的排查了下,自定義的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; } }
這樣問題就解決了。url
參考文檔:spa