我已经设置了自定义404页面custom404.aspx,它正确地返回“404 Not Found”错误,但是最初请求的不存在的页面返回“302 Found”状态。
因此,当我测试thispagedoesnotexist.aspx时,它返回“302 Found”,然后custom404.aspx加载并返回“404 Not Found”状态。
我想确保搜索蜘蛛/机器人了解所请求的页面不存在且不应出现在任何搜索结果中。这个设置是否正确?
答案 0 :(得分:0)
要回答所述问题,那就是自定义错误在ASP.NET中的工作方式。我见过的例子(虽然我没有一个方便)人们使用HttpModules来拦截错误,并向看似不是机器人的用户提供自定义错误页面,并向用户提供404响应是机器人。
在另一个方向,我不确定机器人是否会定期关注302回复。也许更相关的是,让你的错误页面(假设它可用)显示在搜索结果中真的很糟糕吗?至少用户有一个指向您网站的链接 - 这比让您的竞争对手网站显示更好......
答案 1 :(得分:0)
实际上,它最有可能与你在web.config中配置完全相同。
取决于您使用的Web服务器(IIS 6/7)以及您用于配置404自定义页面的方式,但基本上这是重定向到自定义错误页面和执行它之间的区别!
目前您已将asp.net / IIS配置为重定向到错误页面。更改设置以执行页面,您将获得您正在寻找的内容:)
答案 2 :(得分:0)
我找到了解决方案:
在你的web.config中输入“redirectMode = ResponseRewrite”:<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/errors/GeneralError.aspx">
<error statusCode="404" redirect="~/errors/PageNotFound.aspx" />
</customErrors>
...在Page_Load中的自定义404页面中放置:this.Response.Status = "404 Not Found";
瞧!
答案 3 :(得分:-4)
简单地说......
例如,使用:
/path_to_error_page.html
......而不是......
http://www.example.com/path_to_error_page.html
原因是服务器解释初始请求然后生成重定向到404,因此您的客户端有效地获得2个响应。
相对路径不会产生重定向但是内部服务器传输会导致只有1个响应,即你想要的响应!!
这可以解决您的问题。