【ASP.NET 問題】ASP.NET 網站404頁面返回200,或者302的解決辦法

作網站在優化網站時遇到了跳轉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

asp.net網站404頁面返回200,或者302的解決辦法.net

你眼中的404頁面未必返回404狀態碼 404頁面如何正確設置code

相關文章
相關標籤/搜索