【问题标题】:PHP: Giving a 404 doesn't workPHP:给出 404 不起作用
【发布时间】:2012-04-28 18:13:19
【问题描述】:

如果找不到请求的页面,我将使用以下代码显示 404:

if($page_exists)
{
    //...
}
else
{
    header('HTTP/1.0 404 Not Found', true, 404);

    $ui->title = '404 Not Found';

    $o .= '<h1>Not found!</h1>' . "\n";
    $o .= '<p>The requested page could not be found.</p>' . "\n";
}

echo $ui->top();
echo $o;
echo $ui->bottom();

但由于某种原因,我从来没有得到我的 404 状态码——它给出的是 200。我已经检查并仔细检查了 header() 之前没有实际的输出,当我检查 PHP 错误代码时,除了一些通知之外什么都没有。我还测试了一个位置标头,但它也不起作用。

有什么想法吗?

【问题讨论】:

  • 你试过HTTP/1.1吗?
  • FastCGI?尝试状态:404 未找到
  • 您使用的是哪个网络服务器?您使用的是哪个 SAPI?你有在线的示例 URI 吗?
  • $_SERVER['SERVER_PROTOCOL'] 替换硬编码的HTTP/1.0 并看到它有帮助。 HTTP/1.0 在恐龙时代被使用。
  • 我使用的是 Apache 服务器。我尝试了 HTTP/1.1 没有成功,实际上只要我在 header() 中使用 $http_response_code 参数,它应该不会有太大的不同。

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


【解决方案1】:

正如 Jared 所说,对于 FastCGI,您必须使用另一种形式

header("Status: 404 Not Found");

我会从那里开始。

http://php.net/manual/en/function.header.php

【讨论】:

    【解决方案2】:

    好的,问题已解决 - 出于某种原因,文件与 BOM 一起保存。

    【讨论】:

      猜你喜欢
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      相关资源
      最近更新 更多