

■環境  
wordpressにてサイト構築をしているのですが、会員制のサイトのため作成したURL以外は  
ブラウザが標準で吐き出す404のページを表示させたいと考えています。

■試したこと  
テンプレートで以下のように書くと

[code]

    <?php
    /*
    Template Name: test
    */
    header("HTTP/1.1 404 Not Found");
    ?>
    
[/code]

ページが真っ白で表示されます。

[code]

    <?php
    /*
    Template Name: test
    */
    ?>
    
[/code]

こちらでも同様に真っ白で表示されます。

404.phpを削除してブラウザのキャッシュを削除して  
表示してみたのですが404.phpのページが表示されてしまいます。  
（ブラウザ側でキャッシュが残っているのか、wordpressコアで処理されているのか？  
googleのキャッシュが表示されているのか？）

オリジナルの404ページを作る方法はたくさん公開されているのですが  
ブラウザが標準で吐き出す404を意図的に表示する方法が見つけられませんでした。

※ブラウザが標準で吐き出す404というのは  
IEとchromeでは存在しないURLにアクセスした際  
404の表示が違いますがその生の404ページのことです。

こういったことを実現したい場合phpで可能なのでしょうか  
それともapacheでの設定が必要になるのでしょうか。


CC BY-SA 4.0
2018-06-15T01:53:29.313
44773
2018-11-06T05:24:11.777
2018-06-15T11:50:09.463
3060
19992
question
php apache wordpress http
ブラウザ標準の404ページを表示させたい


エラー時のサーバーレスポンスには

[code]

    HTTP/1.0 404 Not Found
    
[/code]

の後ろに

[code]

    <HTML><HEAD>
    <TITLE>404 Not Found</TITLE>
    
[/code]

…と続きがあります。

この内容は、apacheなどであれば  
`/error/HTTP_NOT_FOUND.html.var`  
に格納されたものです。

ブラウザによって独自に見えるのはStatus code 404を見て  
付属のHTMLを無視しているケースです。


CC BY-SA 4.0
2018-06-15T06:47:52.973
44780
2018-06-15T16:08:16.390
2018-06-15T16:08:16.390
3068
28909
44773
answer


ブラウザの実装依存によりますが、少し調べてみました。

Internet Explorer ではレスポンスページのサイズが 512バイト以下であれば、[stackoverflow - カスタムエラーページが IE
で表示されない](https://stackoverflow.com/questions/9022932/custom-http-error-page-
is-not-displayed-in-internet-explorer) で書かれているようにブラウザ側の 404
ページが表示される動作になっています。(ただし、ユーザの設定でサーバ側のコンテンツを表示するように変更が可能です)

Google Chrome では [stackoverflow - Change Chrome 4xx
Page](https://stackoverflow.com/questions/14841256/change-chrome-4xx-
page#14848076) に書かれているように
[chrome.webNavigation](https://developer.chrome.com/extensions/webNavigation#event-
onErrorOccurred) という API 経由で行うようですが、ハードルは高そうです。


CC BY-SA 4.0
2018-11-06T05:24:11.777
50005
2018-11-06T05:24:11.777
22888
44773
answer