【htaccess】403・404・500エラーのときに任意で作成したページを表示する
基本的にはこれでOK
.htaccess
に下記を記述して、ルートディレクトリに.htaccess
とerror.html
を設置すればOK。
ErrorDocument 403 /error.html
ErrorDocument 404 /error.html
ErrorDocument 500 /error.html
コメントで rryu さんからご指摘がある通り、パスの指定に絶対URL(例:http://aaa.com/error.html
)は記述しないでください。
理由は「ErrorDocumentを絶対URLで書くのはやめようよ」が参考になります。
上述した.htaccess(基本な記述)
のように絶対URLは使わずに記述すれば、OKです。
上位階層にURLの書き換えやリダイレクトを設定する.htaccessがある場合
仮に下記のようなディレクトリ構成とします。
今回、ccc.com
のエラー表示を制御したいとします。
通常であれば、前述した通りの記述でccc
内に.htaccess
とerror.html
を設置すれば、問題ありません。
但し、上位階層にURLの書き換えやリダイレクトを設定する.htaccess
がある場合は注意が必要です。
私の場合は、www
直下にWordPressが入っており、w-htaccess
が下記のようにURLを書き換える記述があったため、うまく動作しませんでした。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
最初は解決策として、c-htaccess
の記述を下記のようにすることで、問題なく動作しましたが、前述した通り、絶対URLの指定は避けた方がよいです。
ErrorDocument 403 http://ccc.com/error.html
ErrorDocument 404 http://ccc.com/error.html
ErrorDocument 500 http://ccc.com/error.html
ただ、最初に紹介した.htaccess(基本な記述)
のようにルート相対パス(例:/error.html
)で指定すると500エラーが表示されます。
エラーの原因は、w-htaccess
の有効範囲です。
基本的に、.htaccess
に記述した内容は、下層ディレクトリも適用範囲になります。
つまり、w-htaccess
に記述した内容は、ccc
内にも適用されるということです。
実際にccc
内では下記の記述が適用されているということになります。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
ErrorDocument 403 /error.html
ErrorDocument 404 /error.html
ErrorDocument 500 /error.html
上述したようにccc
内でも書き換えが行われているため、500エラーが表示されます。
そのため、ccc
内では書き換えを行わないように下記のようにRewriteEngine
をOff
にすれば、問題なく任意のエラーページが表示されるようになります。
RewriteEngine Off
ErrorDocument 403 /error.html
ErrorDocument 404 /error.html
ErrorDocument 500 /error.html
私は、上述した方法で解決しましたが、もっとスマートな方法があれば、教えてくださいm(__)m
参考サイト
.htaccess
の基本的なことについて解説。
.htaccess
のrewriteについては下記を。
WordPressの.htaccess
に記述されている内容については下記を。
Author And Source
この問題について(【htaccess】403・404・500エラーのときに任意で作成したページを表示する), 我々は、より多くの情報をここで見つけました https://qiita.com/4cres/items/01553cc51ba7d65918cb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .