はじめに
.htaccess を使って、『403エラー(403 Forbidden)』を『404エラー(404 Not Found)』にリダイレクト(転送)して表示する方法をまとめました。
《リダイレクト(転送)する理由は?》
アクセスを禁止しているユーザーに『403エラー(403 Forbidden)』であることを隠し『404エラー(404 Not Found)』だと思わせることが目的。
403エラー(403 Forbidden) とは?
アクセスを禁止されたユーザーに表示される画面またはレスポンスステータスコードのこと。
「あなたのアクセスは禁止されています。」
404エラー(404 Not Found) とは?
アクセスしようとしたURLにページが存在しない時に表示される画面またはレスポンスステータスコードのこと。
「あなたがアクセスしたURLのページは存在していません。」
403 Forbidden を 404 Not Found にリダイレクトする.htaccess
《ファイルの設置例》
/.htaccess
/index.html
/error/.htaccess
/error/403
/error/404
ErrorDocument 403 /error/403
ErrorDocument 404 /error/404
<RequireAll>
Require all granted
Require not ip 127.0.0.1 (※アクセスを禁止したいIPアドレス)
</RequireAll>
《解説》
[ErrorDocument 403 /error/403]403エラー用のページ
[ErrorDocument 404 /error/404]404エラー用のページ
[Require all granted]全てのアクセス許可
[Require not ip 127.0.0.1]IPアドレスが127.0.0.1の場合はアクセス禁止
<RequireAll>
Require all granted
</RequireAll>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/error/403$
RewriteRule ^(.*)$ - [R=404,L]
《解説》
[Require all granted]全てのアクセス許可
[RewriteCond %{REQUEST_URI} ^/error/403$]/error/403にリダイレクトされた場合
[RewriteRule ^(.*)$ - [R=404,L]]404エラー用のページにリダイレクトする
《アクセスの流れ》
[①]アクセスを禁止されているユーザーがトップページにアクセス
[②]サーバー内では403エラーになる (※ユーザーは気づかない)
[③]サーバー内で/error/403にリダイレクト (※ユーザーは気づかない)
[④]サーバー内で/error/404にリダイレクト
[⑤]ユーザーの画面には404エラーのページが表示される
(text_sakura)