Sitecore使用“302 found”将用户重定向到我的自定义404页面 - 这是合法的吗?

时间:2013-01-10 06:44:41

标签: http http-status-code-404 sitecore sitecore6 http-status-code-302

这更像是一个HTTP规范问题,而不是Sitecore问题。

我在Sitecore中设置了404错误页面:

<setting name="ItemNotFoundUrl" value="/404.aspx" />

因此,当用户访问不存在的页面(例如www.example.com/xyz)时,他们会被重定向到我的自定义404页面(例如www.example.com/404.aspx)。

Sitecore使用302执行重定向,如下面的Firebug屏幕截图所示:

302 found redirect to 404 file not found

这是一个问题吗?即Google和其他搜索引擎会将我的404页面编入网址www.example.com/xyz吗?有问题的网站最初设置为从404页面返回“200 OK”响应(不好!),因此搜索引擎一旦找到网站的链接断开,就会将网站编入索引页面。

我认为因为302只是一个重定向,所以最终(自定义404)URL的状态代码将是任何客户端应该假定应用于初始(重定向)URL的状态。

如果不是问题,那么规范的规范/文档是什么呢?

3 个答案:

答案 0 :(得分:10)

除了Ruud所建议的内容之外,还有blog post by Kern Herskind使用Sitecore / IIS方法而无需编写任何其他代码。

答案 1 :(得分:4)

如前所述,正确的http响应标头至关重要,不仅适用于SEO,还适用于许多其他用例。

有一个名为“Sitecore错误管理器”的Sitecore共享源模块,它使您的Sitecore安装响应正确的404标头,并附带其他一些功能,如配置任何其他错误响应,即使对于Sitecore媒体库(即pdf)文件),多语言支持等。

Sitecore Marketplace:http://marketplace.sitecore.net/en/Modules/Sitecore_Error_Manager.aspx

Github:https://github.com/unic/SitecoreErrorManager

答案 2 :(得分:3)

这确实是一个问题。因为Google现在认为404.aspx页面不存在,并且会认为暂时重定向了不存在的项目。

我想出了一个解决方案,blogged about it here

它的作用基本上是确定该项目不存在(通过管道处理器),然后通过使用WebRequest请求它来检索404页面的内容,并将该内容返回到具有404状态代码的浏览器。