サイト内で何らかのエラーが発生していて、ページが正常に閲覧できないとき、[.htaccess]を使って任意のページにリダイレクトさせる方法を紹介します。
まずは基礎知識になりますが、サイトが閲覧できないときに発生する「404エラー」や「503エラー」は、正式には「HTTPステータスコード」と呼ばれます。
よく見かける40x系、50x系の他に、10x〜30x系も存在します。
それぞれの意味は以下のとおり。
- 100〜系
- リクエスト処理中
- 200〜系
- リクエスト処理成功
- 300〜系
- リダイレクト
- 400〜系
- クライアント エラー
- 500〜系
- サーバー エラー
つまり400番台と500番台の「HTTPステータスコード」が所謂「エラー」になるワケです。
そのエラーの種類を詳しく分類すると以下のようになります。
- 400
- 不正リクエスト。ほとんどはブラウザ側の問題で、リクエストに不正がある場合などに発生する。
- 401
- 認証エラー。ベーシック認証の際などで、パスワードを間違えたときに発生。
- 403
- アクセス禁止。サーバー側の設定で、そのURLへのアクセスが禁止されているときに発生。
- 404
- Not Found。ページが削除されていたり、URLが変更されてページが見れなくなっているときに発生。
- 500
- サーバー内部エラー。プログラムの記述に問題があるときに発生。
- 502
- Bad Gateway。サーバー接続エラー。ネットワークの途中にあるサーバーがエラーを返している。
- 503
- サーバー過負荷。よく言われる「サーバーが落ちた」状態。内部エラー。プログラムの記述に問題があるときに発生。
40x系のエラーはユーザー側の問題ですが、50x系のエラーはWeb管理者(製作者)側で解決する必要があります。
もしこれらのエラーが発生したときに[.htaccess]を使ってリダイレクト先を指定する方法が次のコードになります。
ErrorDocument 400 /error.html ErrorDocument 401 /error.html ErrorDocument 403 /error.html ErrorDocument 404 /error.html ErrorDocument 500 /error.html ErrorDocument 502 /error.html ErrorDocument 504 /error.html
上記の場合ではエラー用のページとして「error.html」を用意してリダイレクト(転送)させています。
なお「error.html」ファイルは「.htaccess」ファイルと同じ階層に置くことが条件です。
もちろん以下のように絶対パス(フルパス)で指定することも可能です。
ErrorDocument 400 http://example.com ErrorDocument 401 http://example.com ErrorDocument 403 http://example.com ErrorDocument 404 http://example.com ErrorDocument 500 http://example.com ErrorDocument 502 http://example.com ErrorDocument 504 http://example.com
以上。HTTPステータスコードのエラーに対する[.htaccess]による対処法でした。
これで、エラーが発生した際に任意のページにリダイレクトさせて、訪問者に適切なメッセージやナビゲーションを提供することができます。
ぜひお試しください。