.htaccessでオリジナルエラーページ

Friday, Apr 22, 2005 - 01:29 +09:00

「.htaccess」とは、サーバー設定を上書きするファイルのこと。サーバー管理者は「httpd.conf」というファイルで基本的な設定を行うのですが、ここで管理者が許可していれば、サイト作成者は「.htaccess」によって設定を任意で上書きすることができます。

「.htaccess」は特定ファイルへのアクセス制限やパスワード保護を可能とする有効な手段だけど、「404 Not Found」などのエラー画面を任意のページに変えることもできます。

基本設定

結論を言えば、めっちゃ簡単。

ErrorDocument 404 /404.html
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 500 /500.html

メモ張などに上記のコードを入力するだけです。ただピリオドから始まるファイル名はWindows等の環境では作成することができないので、サーバーにアップロードしてから「.htaccess」と名前を変える作業が必要になります。

「.htaccess」は設置されたディレクトリ以下に適用されるため、Webサイト全体へ適用したい場合には、/public_html/に置くこと。/public_html/以下にさらに「.htaccess」が置かれていた場合は、そこに記述された部分だけを上書きして適用されます。

エラー表示用として用意したページのURLを指定する方法はRemoteとローカルの二種類がありますが、ここではローカルとしています。Remoteで指定するとクライアント側に「ステータスコード」を返さないため、ブラウザのアドレス欄にエラーページのアドレスが表示されたりします。

ErrorDocument 404 http://www.ro-c.net/error/404.html

これがRemoteでの指定方法。

ErrorDocument 404 /error/404.html

こちらがローカルでの指定。「/」で始まる絶対パスになります。

ErrorDocument 404 "File not found !"

こんな感じでカスタマイズメッセージを指定することもできますが、Internet Explorerでは表示されないようです。

Options -Indexes

こちらはセキュリティ対策。「http://ドメイン名/」など、「/」で終わるURI入力に対して、Indexファイルが存在しなければ「403」を返すと言うもの。これにより、サーバーがディレクトリ一覧を表示する問題を防ぐことができます。

番外編:エラー種別

よく見かける「404 Not Found」というエラーメッセージ。この数字は「ステータスコード」と言います。WWWサーバーの処理結果を示すコードで、HTTPで定義された3桁の数字です。

File Not Found (404)
リクエストされたファイルが存在しない場合に表示されます。おそらくもっとも馴染み深いエラー表示。管理者がファイル名を変更していたり、URLのタイプミスが原因であることが多いです。
Forbidden (403)
リクエストは受けとったが、サーバーに拒否された場合に表示。Cgiのパーミッション設定ミスや、ファイルにアクセス制限が掛けられている時など。
Unauthorized (401)
パスワード認証を必要とするページにアクセスしようとして、失敗した場合に表示。エラーページをRemoteで指定すると、クライアント側では認証に失敗したことに気付けなかったりします。
Internal Server Error (500)
サーバー側の内部エラーを示す表示。Cgiのバグ、「.htaccess」の文法ミス。過負荷による不具合などが考えられます。

posted in Server-Side Trackback (0)

Trackback

このエントリーのトラックバックURL
http://rospear.info/other/mt-tb.cgi/17

« Previous Entry - Next Entry »