ん?apacheのErrorDocument、というかエラーページの出しかた変わった?当然だけどErrorDocumentのURL自体に、アクセス権がない(IP許可されてない)場合、ErrorDocmentは表示されないんじゃなかったっけ?
例えばこんな設定で、documentroot以下に/errがある場合
ErrorDocument 403 /err/403.html <Directory /path/to/public_html> AllowOverRide all Order deny,allow Deny from all Allow from 192.168.0.0/24 </Directory>
- http://www.example.com/ => 403
- http://www.example.com/err/403.html => 403
/err/403.htmlへのアクセスもdenyされるからブラウザには素の403 Forbiddenが出る。なので、別途DirectoryやLocationディレクティブで
<Location /err/> AllowOverRide all Order deny,allow Deny from all Allow from all </Directory>
とかが必要だった気がする。
apache 2.2.12でごにょごにょ設定してたら、ErrorDocumentのURLにアクセス権限がなくてもエラーページが表示されることに気付いた。なんか気持ち悪いなー、どこか他のとこで許可設定してるんかしら。
追記
違うわ。IP許可されてなくても、エラー用のURLを直接叩くと見れるのか。でもステータスコードはきっちり403だな。しかもapache 2.2.12じゃなくて前からだった。恥ずかし。
$ GET -S http://www.example.com/ GET http://www.example.com/ --> 403 Forbidden <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access / on this server.</p> <p>Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.</p> </body></html> $ GET -S http://www.example.com/err/403.html GET http://www.example.com/err/403.html --> 403 Forbidden 403-error-hogehoge