6

我已经设置了一个自定义 404 页面 custom404.aspx,它正确返回“404 Not Found”错误,但是最初请求的不存在页面返回“302 Found”状态。

因此,当我测试 thispagedoesnotexist.aspx 时,它返回“302 Found”,然后 custom404.aspx 加载并返回“404 Not Found”状态。

我想确保搜索蜘蛛/机器人理解所请求的页面不存在并且不应该出现在任何搜索结果中。这个设置正确吗?

4

4 回答 4

0

实际上,它很可能完全按照您在 web.config 中的配置工作。

取决于您使用的 Web 服务器(IIS 6/7)以及您用于配置 404 自定义页面的方式,但基本上这是重定向到自定义错误页面和执行它之间的区别!

目前您已将 asp.net / IIS 配置为重定向到错误页面。更改设置以执行页面,您将得到您正在寻找的内容:)

于 2010-05-18T19:24:35.497 回答
0

要回答上述问题,这就是自定义错误在 ASP.NET 中的工作方式。我见过一些例子(虽然我没有一个方便的例子),人们使用 HttpModules 来拦截错误,并为看起来不是机器人的用户提供自定义错误页面,并向看起来像的用户提供 404 响应成为机器人。

在不同的方向上,我不确定机器人是否会定期遵循 302 响应。也许更相关的是,让您的错误页面(假设它可用)出现在搜索结果中真的很糟糕吗?至少用户有一个指向您网站的链接——这比让您的竞争对手网站出现要好...

于 2010-05-18T19:06:12.417 回答
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";

瞧!

于 2010-08-26T20:21:04.330 回答
-4

简单的说 ...

例如,使用:

/path_to_error_page.html 

... 并不是 ...

http://www.example.com/path_to_error_page.html

原因是服务器解释初始请求然后生成到 404 的重定向,因此您的客户端有效地获得 2 个响应。

相对路径不会产生重定向,但内部服务器传输只会导致 1 个响应,即您想要的响应!

这应该可以解决您的问题。

于 2010-05-17T21:28:59.300 回答