【问题标题】:How can I override the Apache 404 status in PHP?如何在 PHP 中覆盖 Apache 404 状态?
【发布时间】:2013-01-10 12:30:55
【问题描述】:

我有一个 PHP 站点,它使用 404 页面来处理漂亮的 URL 和一些缓存。这工作得非常好,而且在重负载下比usual htaccess redirect rules 更快。

ErrorDocument 404 /damncache/index.php

问题是 Apache 将 HTTP 状态设置为 404,我似乎无法覆盖它。因此,当 Google 索引网站时,所有这些页面都不会被索引(根据 Google 网站管理员工具)。

这是我目前尝试覆盖它的方式:

header($_SERVER['SERVER_PROTOCOL'] . " 200 OK");
header("Status: 200 OK"); // for fast cgi

这样,它对人类/浏览器工作正常,但 Google 显然收到 404 状态并停止。这里是an example。

它托管在 Dreamhost 专用 Linux 服务器上,运行 PHP 5.3.x 和 FastCGI。

【问题讨论】:

  • 为什么要让搜索引擎记录Not Found 的页面?如果用户点击链接后会跳转到 404,这会给用户带来不便。
  • @diggersworld 这不是他在做什么,他在 常规页面 使用 404 错误文档。这是相当...非正统的。
  • @eis 它是不寻常,但我在做科学!我有一个假设,用实验测试它,然后得出一个结论。基本上,404 页面是一个网关 PHP 脚本,它检查有效的缓存页面,失败时尝试基于 url 构建页面,失败时返回 404 页面/状态。除了这个谷歌怪癖之外,它的工作非常出色......比旧的 htaccess 重定向方式快得多。

标签: php linux apache http


【解决方案1】:

http://web-sniffer.net/ 报告 200 OK 标头 - 您是否给了 Google 足够的时间重新抓取页面?

如果它已经从索引中删除了它们,您可能需要再次提交它们 - 它可能会通过抓取其他链接来获取它们,但无论如何网站管理员工具中的站点地图可能是个好主意。

【讨论】:

  • 嗯...我想有可能。几天前,Google 网站管理员工具显示了所有这些 404 错误,因此我修改了 header() 调用以包含 FastCGI 方法,并将所有 404 错误标记为已解决。然后错误都在今天的 GWT 中重新出现。但它可能仍在那个灰色的重新索引区域中。我再给它一点时间。感谢您的链接!
猜你喜欢
  • 2013-12-10
  • 2022-11-14
  • 2017-05-29
  • 2011-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多