这更像是一个HTTP规范问题,而不是Sitecore问题。
我在Sitecore中设置了404错误页面:
<setting name="ItemNotFoundUrl" value="/404.aspx" />
因此,当用户访问不存在的页面(例如www.example.com/xyz)时,他们会被重定向到我的自定义404页面(例如www.example.com/404.aspx)。
Sitecore使用302执行重定向,如下面的Firebug屏幕截图所示:
这是一个问题吗?即Google和其他搜索引擎会将我的404页面编入网址www.example.com/xyz吗?有问题的网站最初设置为从404页面返回“200 OK”响应(不好!),因此搜索引擎一旦找到网站的链接断开,就会将网站编入索引页面。
我认为因为302只是一个重定向,所以最终(自定义404)URL的状态代码将是任何客户端应该假定应用于初始(重定向)URL的状态。
如果不是问题,那么规范的规范/文档是什么呢?
答案 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
答案 2 :(得分:3)
这确实是一个问题。因为Google现在认为404.aspx
页面不存在,并且会认为暂时重定向了不存在的项目。
我想出了一个解决方案,blogged about it here。
它的作用基本上是确定该项目不存在(通过管道处理器),然后通过使用WebRequest请求它来检索404页面的内容,并将该内容返回到具有404状态代码的浏览器。