在項目中,咱們經常須要自定義錯誤頁面,但每每返回的狀態碼都變成了200,對SEO很不友好。我嘗試過在百度上尋找解決方案,但找到的資料中說的方法都試過了,發現都是沒法返回正確的狀態碼的。架構
最後,只好自已摸索了。通過屢次嘗試,總算實現了。如今把實現的方法總結出來,供你們參考:測試
解決方法:spa
在項目根目錄下新建Global.asax文件,並在Global.asax文件的Application_Error()方法中寫入相應的處理代碼便可,無需在Web.Config中作任何自定義錯誤頁面的設置。code
提示:此方法僅在Web Form項目中測試可行。基於MVC架構的項目處理機制可能有所不一樣,則僅供思路參考。orm
void Application_Error(object sender, EventArgs e) { HttpException error = Server.GetLastError() as HttpException; if (error != null) { var statusCode = error.GetHttpCode(); if (statusCode == 500) { Response.StatusCode = 500; Server.ClearError(); Server.Transfer("~/500.htm"); } else if (statusCode == 404) { Response.StatusCode = 404; Server.ClearError(); Server.Transfer("~/404.htm"); } else if (statusCode == 403) { Response.StatusCode = 403; Server.ClearError(); Server.Transfer("~/403.htm"); } } }
效果圖:htm