こうなってしまうと、ユーザは別のサイトへ移動してしまったりするので、ユーザをサイト内の有益なコンテンツへ導けるように、独自にエラー表示を設定する方がいいですよね。
ErrorDocument ディレクティブは、問題やエラーが発生したときの動作を指定できます。
ErrorDocument の基本構文
Redirect ディレクティブで、URL を自動転送する基本的な構文です。
ErrorDocument error-code document
- ErrorDocument
- error-code
- document
エラードキュメントの表示方法の設定の宣言です。
エラーのステイタスコードを指定します。↓ 主なコードの一覧
コード | エラー内容 | 意味 |
---|---|---|
401 | Unauthorized | ユーザー認証が必要なページで認証に失敗 |
403 | Forbidden | 権限がない(ディレクトリにアクセスしようとしたなど) |
404 | Not Found | 指定したファイルが存在しない |
500 | Internal Server Error | サーバがリクエスト実行できない(PHP などのバグ、.htaccess の設定ミス) |
501 | Not Implemented | リクエストを処理できる機能がサーバにない |
503 | Service Unavailable | サービス利用不可 |
表示するテキストまたはファイルへのパスを指定します。
ErrorDocument ディレクティブは、問題やエラーが発生したとき、指定できる動作は、4 つがあります。
① Apache 標準のエラーメッセージを表示(デフォルト。↑ の Chrome の画面のような表示)
② 自分で指定した任意のメッセージを表示
③ 内部サーバの別の URL-path にリダイレクト
④ 外部サーバの別の URL にリダイレクト
以下、②~③まで、例を一つずつ見ていきます。
(①はデフォルトなので、特に設定の必要はありません。)
<document ⇒ 自分で指定した任意のメッセージを表示>
ErrorDocument 404 "Sorry... The file not found"
エラーコードの後に、メッセージをダブルクォート(”)で囲んで記述します。
<document ⇒ 内部サーバの別の URL-path にリダイレクト>
ErrorDocument 404 /error/404.html
“/” で始まるドキュメントルートからの相対パスを指定します。この例ですと、.htaccess ファイルの置かれたディレクトリ内、error というディレクトリの中にある 404.html へリダイレクトされます。
(401: 認証失敗、404: 未検出の場合、次で説明する「外部サーバーへのリダイレクト」ではなく、こちらの「内部サーバへのリダイレクト」を利用します。↓の理由参照)
<document ⇒ 外部サーバの別の URL にリダイレクト>
ErrorDocument 404 http://example.com/404.html
http などから始まる完全な URL を指定します。
注意しなくてはいけないのは、完全な URL を指定するリダイレクトにすると、例え内部サーバであっても、クライアントには、「エラーステイタスコード」ではなく、「リダイレクトステイタスコード」を通知します。
404 エラー(未検出)であるのに、有効なファイルかと、スクローラーなどのロボットは、混乱する可能性があります。
また、401 エラー(認証失敗)で外部 URL へリダイレクト指定する場合、クライアントは 401 のステータスコードを受け取らないため、パスワードをユーザに入力要求しなければならないことが分かりません。
そのため、401、404 エラーの場合は、相対パスを指定する「内部サーバへのリダイレクト」を記述します。
有益な 404 ページを作成
自分のサイトに合わせた 404 ページをカスタマイズすることで、クライアントに有益な情報を提供することができます。
有益な 404 ページを作るためのポイントは、Google のウェブマスターのページによると以下の通りです。
- ユーザーに対して、探しているページが見つからないことを明確に伝えます。親しみやすく魅力的な言葉を使用します。
- 404 ページを、サイトのその他の部分と同じデザイン(ナビゲーションを含む)にします。
- 最も人気のある記事や投稿へのリンクの他、ホームページへのリンクを追加します。
- 404 ページが Google や他の検索エンジンのインデックスに登録されないようにするため、存在しないページがリクエストされたときにウェブサーバーが実際の 404 HTTP ステータス コードを返すことを確認します。
.htaccess ファイルは、一番最後に空行が必要です。忘れずに・・・。