*.example.com のワイルドカード証明書を持っています。Apache で *.example.com の仮想ホストをセットアップしました (HTTPS トラフィックと非 HTTPS トラフィックの両方)。
いくつかの 404 応答ヘッダーをいじっていますが、問題があるようです。そのため、簡単なテスト ケースを作成しました。
仮想ホストで、すべてのトラフィックを index.php に書き換えます。
RewriteRule .* /index.php [QSA]
そしてindex.php
、404 ヘッダーを返します。
header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");
exit();
それ以外はやっていないので、ErrorDocument
セットなどはありません。
サーバーから返されたヘッダーのダンプ (ユーザーfile_get_contents("https://test.example.com");
およびprint_r($http_response_header);
別の PHP ファイルから:
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 ヘッダーとワイルドカード証明書に関する何らかの制限がありますか?
ハクレのリクエストによるアップデート
からダンプされたヘッダー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");
は正常に動作します。