所以......我们有一个定制的CMS。我们有一个重写规则,任何页面请求(当文件不存在时)都会转到 root/index.cfm 文件。在那里,我们在我们的数据库中搜索有问题的页面。如果页面存在,我们会提供正确的模板等。如果该页面不存在,我想提供一个 404 页面。现在我“认为”我不能在 IIS 中执行此操作,因为我需要在 CF 中处理请求,所以它必须通过。该文件将始终存在。当页面不存在时,我尝试使用<cfheader statusCode="404" >
然后包含一些 html,它会放在The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
页面顶部,位于我的 html 之前。为了让它显示页面,我必须从 IIS 中删除 404 状态代码处理程序。
此外,当我以 Google 的身份获取时,它得到的是 301。但是,当我在 Firefox 中查看响应标头时,我得到了。
Transfer-Encoding: chunked
Content-Type: text/html
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Wed, 16 Jan 2013 21:31:42 GMT
404 Not Found
我尝试了重定向和各种事情的组合。如果有办法,我愿意让 IIS 处理 404,但我不知道如何让 Coldfusion 正确提供 404,以便 Google 正确处理。网站管理员工具对我很生气,因为我在此之前提供了“Soft 404s”,所以我正在尝试解决这个问题。
我也尝试过设置<httpErrors existingResponse="PassThrough" />
任何该死的东西,但也没有用。我一直在寻找其他线程试图弄清楚这一点,但不能。
编辑:进一步研究,查看 Firebug 和 Chrome 中的标题信息,我清楚地看到标题说 404。为什么 Fetch as Bing 和 Fetch as Google 会说不同?
我测试了一个事实,即如果我将 .cfm 添加到 URL,它会像 Google 一样获取 404。但是如果没有 .cfm,它会认为它是 301。Firebug 将两者都视为 404。这似乎是 Google 的问题。
答案种类:
所以今天早上我做了更多的测试(实际上是在我添加赏金之后),我注意到在网站管理员工具中,谷歌正确地将我的一个页面标记为 404。所以我开始研究它。我有一个“添加尾部斜杠规则”。谷歌domain.com/page
将 301(我猜是正确的)通知为domain.com/page/
. 但它确实注意到domain.com/page/
了 404。我认为使用斜杠规则是正确的方法,但是,我应该做一些不同的事情,还是使用带有斜杠的重定向是“正确”的做事方式,即使谷歌有时想为它找我。