【问题标题】:Custom 404 page sends 200 status code自定义 404 页面发送 200 状态码
【发布时间】:2010-01-04 22:10:37
【问题描述】:

404错误页面的200 OK标头错误:

服务器响应:
http://www.example.com/err404.html HTTP
状态码:HTTP/1.1 200 OK

我的客户说,它应该给出 404。

【问题讨论】:

  • 这称为软 404,而硬(“正确”)404 实际上返回 400 Not Found

标签: php http-status-code-404 http-status-codes


【解决方案1】:

我猜你使用ErrorDocument 的绝对 URL 如下:

ErrorDocument 404 http://example.com/err404.html

在这种情况下,服务器会以 http://example.com/err404.html 作为位置响应 302 重定向。如果随后请求该 URL,您的服务器将发送 200 状态代码,正如您所经历的那样。

尝试只使用绝对 URL 路径:

ErrorDocument 404 /err404.html

【讨论】:

  • 是的,很好猜你有:) 我有blabla.com/err404.html url。我刚刚按你说的编辑了,我现在怎么控制它是否可以?我在哪里可以看到这个 200OK 错误消息?在萤火虫?还是别的什么?谢谢
  • +1 表示猜测。 @artmania:只需请求一个不存在的 URL 并检查响应标头。
  • 我相信 artmania 正在询问如何“检查响应标头”。答案:是的,Firebug 可以做到这一点,特别是在网络视图中,如以下屏幕截图所示:geekswithblogs.net/images/geekswithblogs_net/renso/Firebug/…
  • 我尝试了绝对 url 路径,并使用 web-sniffer.net 进行了测试。看起来还是 200 OK,这是截图files.droplr.com/files/15306373/… :(
  • @artmania:你要求什么资源?现有的还是不存在的?
【解决方案2】:

如果错误页面是实际请求(即错误页面由浏览器地址栏、书签、PHP 中的重定向直接请求),您将获得状态 200 , ETC)。如果错误页面是由网络服务器本身返回的,而实际上存在无效请求的方式,或者当它与header("HTTP/1.1 404 Not Found"); 一起被 PHP 动态包含时,您将获得状态 404。在 Apache HTTP 服务器中,自定义错误页面的位置可以在 httpd.conf 中的某处进行配置。

【讨论】:

  • 感谢您提供详细信息。这有什么不好?无论如何它正在重定向到 404.. 我不明白这一点。
  • 您不应重定向。它将导致 200。我认为您的主要问题是您不了解 HTTP 的工作原理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
相关资源
最近更新 更多