質問: さくらサーバーで、.htaccee に ErrorDocument を記述しましたが効きません。 以下、.htaccesの内容です。 DirectoryIndex index.html index.htm index.shtml index.php index.cgi Options -Indexes AuthUserFile /home/pluse11/www/pluse-test01/.htpasswd AuthType Basic AuthName "Web access" Require valid-user Satisfy all Order deny,allow RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] ErrorDocument 500 /500.html もちろん 500.html はルートに設置しています。 Wordpress設置サイトで、Wordpressが設置されているディレクトリ「WP」のパーミッションを ワザと400 にして HTTP ERROR 500 を発生させているのですが、 500.html は表示されず、HTTP ERROR 500 が表示されています。 のすぐ上に、ErrorDocument 500 /500.html を移動しても 結果は同じです。 どのようにすれば 500.html が表示されるのでしょうか? ご教示よろしくお願いいたします。
回答: マニュアルの以下文章の状況に該当しているのかもしれません。 ErrorDocumentマニュアル(英語) > > Although most error messages can be overridden, there are certain circumstances where the internal messages are used regardless of the setting of ErrorDocument. In particular, if a malformed request is detected, normal request processing will be immediately halted and the internal error message returned. This is necessary to guard against security problems caused by bad requests. > > > ErrorDocumentマニュアル(日本語) > > ほとんどのエラーメッセージを上書きすることができますが、特定の状況下では ErrorDocument の設定にかかわらず内蔵のメッセージが使われます。特に、不正な形式のリクエストが検出された場合、通常のリクエスト処理は即座に中止され、内蔵のエラーメッセージが返されます。この処置は不正なリクエストによって引き起こされる、セキュリティ問題から守るために必要な措置です。 > > > マニュアル(英語)の次の段落にある、`ProxyErrorOverride On` を設定すると挙動が変わるかもしれません。 ProxyErrorOverride は .htaccess では設定できないので、httpd.conf などサーバー側で設定する必要があります。