エラーページを独自の内容に変更するための「.htaccess」ファイルを作成

エラーページをカスタマイズするための「.htaccess」ファイルはメモ帳でも作成可能

エラーページをカスタマイズするための「.htaccess」ファイルはメモ帳でも作成可能

さて、前のページでもご紹介した通り、各種エラーページを独自の内容にカスタマイズするためには、「.htaccess」という特殊なファイルを使います。特殊なファイルといっても、中身はプレーンテキストなので、OSに付属しているテキストエディタ(Windowsの場合なら「メモ帳」)でも作成できます。

テキストエディタで、「.htaccess」という名称のファイルを作成し、その中に「エラー番号」と「それに対応するエラーページの場所」を列挙するだけです。
※アップロード先については、後述(4ページ目で解説)します。


 
「.htaccess」ファイルそのものの作成・設置方法・注意点については
※.htaccessファイルには用途が多数。.htaccessファイル自体の詳しい作成方法は別記事で解説

※.htaccessファイルには用途が多数。.htaccessファイル自体の詳しい作成方法は別記事で解説

この「.htaccess」ファイル自体の作成方法や設置方法に関しては、記事「.htaccessファイルの書き方と設置方法」で解説しています。もし、「.htacces」ファイルそのものの作成方法が分からない場合は、別途そちらの記事をご参照下さい。

本記事では「.htaccess」ファイルそのものの作成方法に関しては省略し、「.htaccess」ファイル内に記述する必要のある内容だけを解説します。


 
それでは、下記の手順で、「.htaccess」ファイルを記述してみて下さい。


 

エラーページを独自のHTMLに変更する、ErrorDocumentディレクティブ

エラーページを独自の内容に変更するには、「.htaccess」ファイル内に下記のような形式の1行を記述します。文字(英・数・記号)はすべて半角(ASCII文字)です。
ErrorDocument (コード) (HTMLファイルの絶対パス)
「ErrorDocument」という記述に続いて、エラー番号である「HTTPステータスコード(3桁の数値)」と、独自のエラーページとして用意した「HTMLファイルへの絶対パス」を、半角スペースで区切って記述します。例えば、以下のように記述します。
ErrorDocument 401 /err/e401.html
ErrorDocument 403 /err/e403.html
ErrorDocument 404 /err/e404.html
ErrorDocument 500 /err/e500.html
上記の例では、
  • 401 Unauthorisedエラーには、errフォルダ内の「e401.html」の内容を、
  • 403 Forbiddenエラーには、errフォルダ内の「e403.html」の内容を、
  • 404 Not Foundエラーには、errフォルダ内の「e404.html」の内容を、
  • 500 Internal Server Errorエラーには、errフォルダ内の「e500.html」の内容を、
それぞれ表示します。

上記以外に「405 Method Not Allowed」や「503 Service Unavailable」などのエラーを置き換えたい場合も同様です。「405」や「503」などのコード(3桁の数字)と、それに対応するHTMLファイル名を必要なだけ列挙します。

なお、ここに記述しなかったエラーが発生した場合や、ここで記述したページが見つからなかった場合は、デフォルトのエラーページが表示されます。

注意:絶対パスで記述
エラーページとして表示したいHTMLファイルの位置は、絶対パスで記述する必要がある点に注意して下さい。もし「../../error404.html」などのような相対パスで書いてしまうと、サブディレクトリ内でエラーが発生した場合に正しくエラーページを表示できません。詳しい書き方を、下記でご紹介致します。

ErrorDocument記述方法A:「/」で始まる絶対パスで記述

例えば、「404 Not Found」エラーが発生した際に、errorフォルダにある「notfound.html」ファイルの内容を表示させたい場合は、下記のように1行を記述します。
ErrorDocument 404 /error/notfound.html
「ErrorDocument」と「404」と「/error/notfound.html」との間には、それぞれ半角スペースが1つずつあります。

記述例1:
例えば、notfound.htmlファイルが、http://allabout.co.jp/notfound.html というURLでアクセスできる位置にアップロードされている場合は、
ErrorDocument 404 /notfound.html
と記述します。絶対パスであることを示す先頭の「/」記号を忘れないで下さい。

記述例2:
また、もし http://allabout.co.jp/errors/notfound.html にあるなら、
ErrorDocument 404 /errors/notfound.html
と記述することになります。

記述例3:
さらに、もし http://allabout.co.jp/~user/err/notfound.html にあるなら、
ErrorDocument 404 /~user/err/notfound.html
と記述します。

※ここでは、サーバ上のフルパスを記述するわけではない点に注意して下さい。例えば、 /home/username/www/notfound.html のような、(サーバの)ルートディレクトリからのフルパスを書くわけではありません。

※独自のエラーページは、静的なHTMLファイルでなくても構いません。例えば、CGIを指定することもできます。その場合は、エラーが発生するたびにCGIが動作することになる点と、エラーページを表示するためのCGI自体が別のエラーを発生させる可能性があることに注意して下さい。

ErrorDocument記述方法B:URLを記述

エラー用のHTMLファイルが別のウェブサーバにあるなら、次のような記述も可能です。
ErrorDocument 404 http://www.example.com/err404.html
ただし、このようにURLを記述した場合は、ブラウザ(クライアント)側には「404」ではなくリダイレクトのためのステータスコードが返されます。また、ブラウザのアドレス欄の表示も書き換わってしまいます。したがって、よほどの理由がない限りは、この方法は選択しない方が望ましいでしょう。

※特に、ブラウザのアドレス欄の表示が変わってしまうことは、閲覧者にとって不便です。どのようなURLで「404 Not Found」エラーになったのかが分かりにくくなってしまいますから。また、URLを手で打ち直そうとしても、一部分だけを修正することができず、1からすべて打ち直すことになってしまうデメリットもあります。

同一サーバ内のページをURLでは指定しないように注意
なお、同じサーバ内にあるページを、上記のようにURLで記述するのは避けましょう。エラー用として指定したHTMLファイルが見つからなかった場合に、存在しないURLにリダイレクトし続けて無限ループに陥ってしまうことがあります。同じサーバ内にあるページを指定する場合は、先の「記述方法A」の書き方を使って下さい。

※記述方法Aの場合は、エラー用のHTMLファイルが存在しなくても、デフォルトのエラーメッセージが表示されるだけで無限ループには陥りません。

ErrorDocument記述方法C:メッセージだけを記述

独自のエラーページは用意せず、標準のエラーメッセージを独自のエラーメッセージに変更したいだけなら、以下のように記述します。
ErrorDocument 404 "[404] There are no files!"
上記のように記述すると、ただ「[404] There are no files!」というエラーメッセージだけが表示されるようになります。この場合は、出力される内容はHTMLの形式にはならず、ただ上記で記述したテキストだけが返されます(※引用符の内側に直接HTMLソースを書けば、そのHTMLがそのまま出力されます)。なお、Internet Explorerのように、エラー内容を独自のデザインで表示する仕様のブラウザでは、この指定は無視される可能性があります(※記述内容が512バイト未満だと無視されます。詳しくは後述)。

さて、上記では、「エラー番号」と「それに対応するエラーページの場所」を示す記述方法をご紹介致しました。次に、各種エラーページの種類と、独自ページに書いておくと便利な内容についてをご紹介致します。