404的ASP.NET自定义错误页面为http状态返回302

在我的asp.net网站上,我在web.config文件中定义了以下自定义错误页面.
<customErrors mode="On" defaultRedirect="~/defaulterror.htm" >
<error statusCode="404" redirect="~/404.htm" />

当找不到文件时,它正确显示404.htm页面,但问题是当我做fiddler跟踪它返回302作为HTTP状态代码.这是搜索引擎页面索引的一个大问题,因为这些断开的链接仍然被索引最近因为这个在我的网站上.如何防止返回302作为文件未找到错误的HTTP状态代码,并返回404文件未找到错误.我正在使用asp.net 3.5.

解决方法

在谷歌搜索此问题后,似乎这是Microsoft ASP.NET为此情况提供的认行为.这对SEO来说非常糟糕.我找到的解决方法是检查所请求的文件是否存在于HTTP处理程序(或global.asax文件)中,或使用:
<customErrors mode="On" redirectMode="ResponseRewrite">
    <error statusCode="404" redirect="/FileNotFound.aspx" />
</customErrors>

如果请求的文件不存在,则将请求路径重写为未找到文件页面(如果使用HTTP处理程序或global.asax),清除404错误页面代码后面的服务器错误,并添加404错误标头手动响应而不是等待服务器这样做.

Server.ClearError();
Response.Status = "404 Not Found";
Response.StatusCode = 404;

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...