我试图确定在标准ASP.NET Web应用程序中实现404页面的最佳方式。我目前在Global.asax文件中的Application_Error事件中捕获404错误,并重定向到友好的404.aspx页面。问题是,请求看到一个302重定向,其后是404页面缺失。有没有办法绕过重定向,并用立即404包含友好的错误消息响应?
如果对非现有网页的请求返回302,然后是404,那么Googlebot等网络抓取工具是否会提供保护?
解决方法
在你的Global.asax的OnError事件中处理这个:
protected void Application_Error(object sender,EventArgs e){ // An error has occured on a .Net page. var serverError = Server.GetLastError() as HttpException; if (null != serverError){ int errorCode = serverError.GetHttpCode(); if (404 == errorCode){ Server.ClearError(); Server.Transfer("/Errors/404.aspx"); } } }
在错误页面中,您应该确保正确设置状态代码:
// If you're running under IIS 7 in Integrated mode set use this line to override // IIS errors: Response.TrySkipIisCustomErrors = true; // Set status code and message; you could also use the HttpStatusCode enum: // System.Net.HttpStatusCode.NotFound Response.StatusCode = 404; Response.StatusDescription = "Page not found";
你也可以在这里很好地处理各种其他错误代码。
Google一般会遵循302,然后遵守404状态代码,因此您需要确保在错误页面上返回该状态代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。