サイト内で何らかのエラーが発生していて、ページが正常に閲覧できないとき、[.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]による対処法でした。
これで、エラーが発生した際に任意のページにリダイレクトさせて、訪問者に適切なメッセージやナビゲーションを提供することができます。
ぜひお試しください。