エラーページを指定する
※当サイトは、アフィリエイト広告を掲載し、収益を得て運営しています。
Apacheは、各種エラーが発生するとエラーページを表示します。例えば、存在しないファイルへアクセスした場合などが代表的ですね。ファイルが見つからない旨の素っ気ないエラーメッセージを目にしたことがある方も多いと思います。
これ以外にも、サーバへのアクセスが拒否されたときや、認証が失敗したとき、サーバの内部エラーが発生したときなど、様々なエラーページが存在します。本ページでは、これらのエラーが発生した際に独自のエラーページを表示する設定方法についてご紹介します。
セキュリティ上の問題や基本的なエラーを避けるため、.htaccessの前知識として当ディレクトリTOPページ内にある、.htaccessの基本も併せてお読みください。
.htaccessへの指定方法
基本的な文法は下記の通りです。とっても簡単ですね。通常はこの指定をした.htaccessファイルを、ドキュメントルート以上に配置します。
それでは具体例を見てみましょう。
指定例1-公開ディレクトリからの絶対指定
一般的な指定方法です。サーバの公開ディレクトリを意味する[ / ]からファイルを指定していますので、公開ディレクトリにそれぞれのファイルを置けば、エラー時に該当のファイルが呼び出されます。なお、ファイル名は自由に決めてかまいません。
ErrorDocument 401 /401.htm
# アクセスが拒否されたとき
ErrorDocument 403 /403.htm
# ファイルが見つからなかったとき
ErrorDocument 404 /404.htm
# 内部エラーが発生したとき
ErrorDocument 500 /500.htm
ちなみに、実際にエラーページが表示される際、ブラウザのアドレスバーには上記ファイル名(404.htm)は見えません。アクセスしたURIが表示されたままです。
指定例2-URI指定
下記のように、401エラー以外は、ファイル名はURI指定でもOKです。ただしこの場合は、アドレスバーに指定したURIにリダイレクト(転送)されてしまいます。基本的には指定1の方をお勧めします。
ErrorDocument 401 /401.htm
# アクセスが拒否されたとき
ErrorDocument 403 http://www.hogefoobar.co.jp/403.htm
# ファイルが見つからなかったとき
ErrorDocument 404 http://www.hogefoobar.co.jp/404.htm
# 内部エラーが発生したとき
ErrorDocument 500 http://www.hogefoobar.co.jp/500.htm
ファイルサイズが小さすぎると正しく表示されない
実は、指定方法が正しくても、エラーページとして指定するファイルのサイズが小さすぎると正しく表示されない場合があります。なぜなら、ブラウザによってはファイルサイズが小さすぎると、ブラウザのデフォルトエラーページに置き換えてしまうことがあるからです。少なくともファイルサイズを1kb以上にしておくとよいでしょう。
公開ディレクトリからの絶対指定をする際の注意点
先ほどの指定例1でエラーページを指定する場合、ちょっとした問題が発生することがあります。それは、エラーページのファイル内で、相対指定のパスを利用しているときです。
例えば、404エラーファイル(ここでは公開ディレクトリに置いた404.htmとします)の中に、下記のように画像があったとします。
上記画像は、Dreamweaverなどのエディタで404.htmを開いたときに、デザインビューでリンクが正しくできています。実際に、404.htmをDreamweaverでブラウザプレビューしても表示されるでしょうし、下記のように存在しないページにアクセスしても、きちんと404.htmと画像は表示されています。
しかし、次のようにしてみるとどうでしょうか。
おそらく画像が表示されなかったと思います。それはなぜでしょうか。アドレスバーに表示されたURIを見ると理解できます。アドレスバーには当然、http://www.hogefoobar.co.jp/a/存在しないページ.html とあるはずです。
http://www.hogefoobar.co.jp/a/存在しないページ.html ページから404.htmが読み込まれるわけですから、その中で<img src="img/logo.gif" />を呼び出すと、ブラウザはhttp://www.hogefoobar.co.jp/a/img/logo.gifを探してしまうのです。
これを回避するには、絶対URIでパスを指定するか、もしくは公開ディレクトリからの絶対パス指定にすれば問題は解決します。下記のような感じですね。
または
<img src="http://www.hogefoobar.co.jp/img/logo.gif" />
なお、当然ですがこの問題は画像だけでなく、パス指定されているもの全てにあてはまります。エラーページは、基本的に公開ディレクトリからの絶対パスで作る、と覚えておくといいでしょう。
12/06/30 facebookページ開設しました。RSS代わりにも使いたいと思います。
コメント
この記事へのコメントはまだありません。
↓もし参考になりましたら、シェアしていただけると嬉しいです(^-^)