.htaccessによるエラーページの作成

存在しないページにアクセスした時、ブラウザでは「ページが表示できません」などと表示されます。これを回避するために、エラーページを表示させることができます。

本ページでは、エラーページの作成と設定方法について説明します。

エラーページとは

エラーページとは、何かしらのエラーがあった時に表示するページです。以下は、本サイトのエラーページです。

本サイトのエラーページが表示されています。

例えば、存在しないページにアクセスがあった時、ブラウザで「ページが表示できません」などと表示されると、訪問した人は内部からのリンクの場合でもブラウザの戻るボタンで戻らなければならず、外部からのリンクの場合は通常は諦めて帰ってしまいます。

エラーページを作っておくと、作成したエラーページを表示させることができます。エラーページで、トップページや主要ページにリンクしていれば、リンクしたページにアクセスできるようになります。

つまり、訪問者が帰ってしまう可能性を少なくできます。

エラーの種類

主なエラーの種類は、以下のとおりです。

【主なエラーの種類】
HTTPステータスコード エラー名 エラーの意味
403 Forbidden 許可されていないページへのアクセス
404 Not Found 存在しないページへのアクセス
500 Internal Server Error サーバー側でのエラー
503 Service Unavailable 一時的な利用不可

HTTPステータスコードとは、サーバーからの応答に組み込まれる数字です。エラーページがない時、この数字をもとにブラウザがエラーの内容を表示します。また、正常な時は200が返されます。

500は、PHPなどのプログラムにエラーがある時などに表示されます。

503は、サーバーに負荷がかかっている、メンテナンス中、転送容量を超えたなどが考えられます。

.htaccessを利用したエラーページの表示

エラーページの表示は、.htaccessを利用して行います。以下は、記述例です。

【エラーページへの転送のための.htaccess記述例】
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
ErrorDocument 503 /error/503.html 

上記をメモ帳などで作成して、ファイル名を.htaccessにして保存します。保存したファイルを、サーバーのトップディレクトリ(トップページと同じディレクトリ)にアップロードします。

これで、例えば403エラーであれば、errorディレクトリの403.htmlファイルが表示されます。各ファイルは、HTMLで作成してアップロードしておく必要があります。

留意点

エラーページを作る時、以下2点に留意が必要です(ドメインがexample.comの場合を例にしています)。

.htaccessではドメインなどを含めて記述しない
.htaccessの/error/404.html部分を、https://example.com/error/404.htmlなどとドメイン含めて記述すると、一時的な転送となって404.htmlに転送されてしまいます。
エラーページでは絶対パスで記述する
404.htmlなどエラーページのHTMLファイルで、画像やリンクなどを記述する時は、絶対パスで記述します。

1点目は、.htaccessの書き方の留意点です。ドメイン含めて記述すると、転送されてブラウザのアドレス欄もhttps://example.com/error/404.htmlに変わってしまいます。また、検索エンジンも存在するページと認識する可能性があり、好ましくありません。

本来、https://example.com/test.htmlが存在しないのであれば、アドレス欄はhttps://example.com/test.htmlのまま、エラーページが表示されます。

2点目は、エラーページ(HTMLファイル)の書き方の留意点です。例えば、画像を表示する時に<img scr="images/err.png" alt="">と相対パスで記述するのではなく、以下どちらかの絶対パスで記述します。

  • <img scr="https://example.com/images/err.png" alt="">
  • <img scr="/images/err.png" alt="">

これは、https://example.com/test/test.htmlでエラーになった場合、相対パスで記述していると、https://example.com/test/images/err.pngファイルを表示しようとするためです。つまり、相対パスだとエラーとなったURLが基点になるため、エラーとなったURLによって指し示すファイルが異なり、画像を表示できない可能性があります。

絶対パスで記述しておけば、どのURLでエラーになっても、同じファイルを指し示すことができます。これは、画像だけでなくリンクなど、パスを記述するものすべてに当てはまります。

補足

レンタルサーバーによっては、デフォルトでエラーページが用意されています。しかし、汎用的なエラーページなので、サイトへのリンクなどがないと思います。

レンタルサーバーで用意されていても、.htaccessが利用できれば独自のエラーページを表示させることができます。この時、エラーページにはサイトのトップページなどにリンクする、または検索窓を設けて検索できるようにするなどの配慮が必要です。

リンクなどがなく、エラー内容だけ表示している場合は、サイトへのアクセスは諦めてしまうと思います。