【问题标题】:PHP: 404 header not working on HTTPS site - returns blank page instead of default not found pagePHP:404 标头在 HTTPS 站点上不起作用 - 返回空白页面而不是默认的未找到页面
【发布时间】:2012-10-08 11:28:32
【问题描述】:

我有一个通配符证书,我们称之为 *.example.com,我已经在 Apache 中为 *.example.com 设置了一个虚拟主机(适用于 HTTPS 和非 HTTPS 流量)。

一直在弄一些404响应头,但我好像有问题,所以我做了一个简单的测试用例:

在 virtaul 主机中,我将所有流量重写为 index.php:

RewriteRule .* /index.php [QSA]

index.php 中,我返回一个 404 标头:

header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");
exit();

除此之外我什么都不做,所以没有ErrorDocument 设置或类似的设置。

服务器返回的标头转储(来自另一个 PHP 文件的用户 file_get_contents("https://test.example.com");print_r($http_response_header);

Array
(
    [0] => HTTP/1.0 404 Not Found
    [1] => Date: Mon, 08 Oct 2012 12:41:28 GMT
    [2] => Server: Apache/2.2.16 (Debian)
    [3] => X-Powered-By: PHP/5.3.3-7+squeeze14
    [4] => Vary: Accept-Encoding
    [5] => Content-Length: 57
    [6] => Connection: close
    [7] => Content-Type: text/html
)

如果我随后在任何子域/任何路径上输入 HTTP 站点,浏览器将正确显示默认的未找到页面,但如果我使用 HTTPS,浏览器将改为显示空白页面(IE 除外,它会正确(?)显示未找到的页面)。

header("Status: 404 Not Found"); 也不起作用。

这不可能吧?有什么我在这里遗漏的 - 可能是对 404 标头和通配符证书的某种限制?

应 Hakre 要求更新

headers_list()转储的标头:

Array
(
    [0] => X-Powered-By: PHP/5.3.3-7+squeeze14
)

似乎服务器完全忽略了添加我的 404 标头,无论使用这些写标头的方式中的任何一种:

header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");
header("HTTP/1.0 404 Not Found");
header("HTTP/1.1 404 Not Found");

header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 等其他标头可以正常工作。

【问题讨论】:

  • 404 not found header 在 PHP 中有些特殊,您可以在 PHP header function 的文档中找到详细信息。它还对Status: 标头及其用途进行了一些解释。同样在您的标头转储中,不清楚它与哪个标头调用相关。你在那里写的似乎不正确,代码示例与转储不匹配。并在最可能的故障点停止:不是 SSL,只是没有发送正确的标头。如果你使用当前的 PHP,你有 php.net/manual/en/function.headers-list.php
  • 我的错,我将请求转储到我同时拥有header("Status: 404 Not Found");header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found"); 的地方。现在已更正,我还添加了一个段,其中包含使用 headers_list(); 转储的标头
  • 使用类似 FireBug 的东西,浏览器会收到什么标头?

标签: php ssl https http-status-code-404


【解决方案1】:

这是错误的:

header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");

即使你使用的是 HTTPS,你也应该返回:

header("HTTP/1.1 404 Not Found");

【讨论】:

猜你喜欢
  • 2015-08-26
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多