在项目中,咱们经常须要自定义错误页面,但每每返回的状态码都变成了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