4月 7th, 2008at 12:14

Tags:

Apache2.0.55のエラーページをカスタマイズ

このエントリーをはてなブックマークに追加

エラーページをオリジナルのものにする方法。

Apacheのエラーページカスタマイズ

httpd.confの以下の場所を修正する。

Alias /error/ "C:/root/error/"

ErrorDocument 400 /error/400_HTTP_BAD_REQUEST.htmlErrorDocument 401 /error/401_HTTP_UNAUTHORIZED.htmlErrorDocument 403 /error/403_HTTP_FORBIDDEN.htmlErrorDocument 404 /error/404_HTTP_NOT_FOUND.htmlErrorDocument 405 /error/405_HTTP_METHOD_NOT_ALLOWED.htmlErrorDocument 408 /error/408_HTTP_REQUEST_TIME_OUT.htmlErrorDocument 410 /error/410_HTTP_GONE.htmlErrorDocument 411 /error/411_HTTP_LENGTH_REQUIRED.htmlErrorDocument 412 /error/412_HTTP_PRECONDITION_FAILED.htmlErrorDocument 413 /error/413_HTTP_REQUEST_ENTITY_TOO_LARGE.htmlErrorDocument 414 /error/414_HTTP_REQUEST_URI_TOO_LARGE.htmlErrorDocument 415 /error/415_HTTP_UNSUPPORTED_MEDIA_TYPE.htmlErrorDocument 500 /error/500_HTTP_INTERNAL_SERVER_ERROR.htmlErrorDocument 501 /error/501_HTTP_NOT_IMPLEMENTED.htmlErrorDocument 502 /error/502_HTTP_BAD_GATEWAY.htmlErrorDocument 503 /error/503_HTTP_SERVICE_UNAVAILABLE.htmlErrorDocument 506 /error/506_HTTP_VARIANT_ALSO_VARIES.html

これでエイリアスで指定した「C:/root/error/」にエラーページを置いてやれば独自のエラーページが表示可能。

Apache2ではマルチ言語でエラーページを表示できる。Apache2独自のCGIのようなものも記述できるので、Includeなどを利用してページ分割するのもいい。

オリジナルエラーページが表示されない場合

IEでは512バイト以下のサイズのエラーページだとIE独自のエラーページに置き換えてしまう仕様になっている。これをなくすには

ツール -> インターネットオプション -> 詳細設定 -> ブラウズの「HTTP エラーメッセージを簡易表示する」のチェックを外す

ことで対応できるが、全クライアントで設定するのはめんどくさい。
こういう場合は空白文字などでエラーページのサイズを513バイト以上にしてあげるといい。

なんかたまにうまくいかない場合があるけど、httpd.confが読み込めてないのが原因か、再起動を繰り返すとうまくいった。

サンプル

/include/head.html

<!--#set var="MSG" value="Not Found" --><!--#include virtual="./include/head.html" -->

ファイルが存在しません。ちなみにミスチルの曲です。

<!--#include virtual="./include/foot.html" -->

/include/foot.html

</p>

<address> <a href="/"><!--#echo var="SERVER_NAME" --></a> <!--#config timefmt="%c" --> <!--#echo var="DATE_LOCAL" --> <a href="mailto:<!--#echo encoding="url" var="SERVER_ADMIN" -->">  webmaster </a>. </address> </body></html>

/404_HTTP_NOT_FOUND.html

<!--#set var="MSG" value="Not Found" --><!--#include virtual="./include/head.html" -->

ファイルが存在しません。ちなみにミスチルの曲です。

<!--#include virtual="./include/foot.html" -->
このエントリーをはてなブックマークに追加