ステータス 403 Forbidden 応答を 404 Not Found 応答にする/mod_asis設定
apacheでコンテンツ(ファイル/ディレクトリ等)に対してアクセス制限を掛けた場合、標準では応答ステータス 403 Forbidden となります。
アクセス制限により、コンテンツへのアクセス/閲覧は防止出来ますが、ファイルが存在することを知らせることになります。
そこでapacheの標準機能であるmod_asisを使用して、403 Forbidden 応答を 404 Not Found 応答と同一のものにします。
- 参考URL
http://httpd.apache.org/docs/2.2/ja/mod/mod_asis.html
mod_asis(場合によってはmod_rewrite等と組み合わせて)は応用範囲も広く、何かと便利です。
バージョン情報
ここでは、以下のバージョンについて記載しています。
- CensOS5
$ cat /etc/redhat-release CentOS release 5.11 (Final) $ httpd -v Server version: Apache/2.2.3 Server built: Sep 16 2014 11:29:05
- CentOS6
$ cat /etc/redhat-release CentOS release 6.7 (Final) $ httpd -v Server version: Apache/2.2.15 (Unix) Server built: Dec 15 2015 15:50:14
mod_asis設定
404 Not Found 応答に使用するドキュメントを作成します。
既に、該当のエラードキュメントがある場合は、それを流用してください。
例として、ドキュメントルート下に「404.asis」というファイルを作成します。
--- /dev/null
+++ /var/www/html/404.asis
@@ -0,0 +1,11 @@
+Status: 404 Not Found
+Content-type: text/html
+
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<html><head>
+<title>404 Not Found</title>
+</head><body>
+<h1>Not Found</h1>
+<p></p>
+<hr>
+</body></html>
apacheの設定を行います。
--- /dev/null
+++ /etc/httpd/conf.d/asis.conf
@@ -0,0 +1,4 @@
+LoadModule asis_module modules/mod_asis.so
+AddHandler send-as-is asis
+ErrorDocument 403 /404.asis
+ErrorDocument 404 /404.asis
apacheにモジュールを適用します。
# service httpd configtest && service httpd reload
動作確認
設定前の応答。
$ HEAD http://www.example.jp/.htaccess 403 Forbidden ...
設定後の応答。
$ HEAD http://www.example.jp/.htaccess 404 Not Found ...
$ GET http://www.example.jp/.htaccess <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p></p> <hr> </body></html>