Apache ディレクトリリストの表示を禁止する方法(.htaccess ファイルによる 403 Forbidden エラーの問題)
Apache でディレクトリリストを表示しないようにするにはどうすればいいですか?
デフォルトでは、ブラウザに以下のアドレスを入力すると:
http://localhost:8080/
そして、ディレクトリインデックスファイルを index.html に設定し、ファイルのルートディレクトリに index.html がある場合、
ブラウザは index.html の内容を表示します。index.html が存在しない場合、ブラウザはファイルのルートディレクトリのディレクトリリストを表示します。
ディレクトリリストには、ファイルのルートディレクトリ内のファイルとサブディレクトリが含まれます。
(注:インデックスファイルの設定:)
#ここで、特定のディレクトリがリクエストされた場合に最初に実行されるファイルを設定できます
DirectoryIndex echo.php index.html index.php
同様に、仮想ディレクトリのアドレスを入力すると:
http://localhost:8080/b/
もし仮想ディレクトリに index.html が存在しない場合、ブラウザはその仮想ディレクトリのディレクトリ構造を表示し、仮想ディレクトリ内のファイルとサブディレクトリを一覧表示します。
Apache でディレクトリリストを表示しないようにするにはどうすればいいですか?
httpd.conf ファイルで次のようなディレクティブを見つけます:
<Directory "D:/xx/xx/xx">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
ディレクティブを次のように変更します:
方法 1:Options Indexes FollowSymLinks の Indexes の前に - 記号を追加します。
つまり: Options -Indexes FollowSymLinks
方法 2:Options Indexes FollowSymLinks #---------->Options FollowSymLinks
方法 3:ディレクトリに.htaccess ファイルを追加し、次のディレクティブを記述します: Options FollowSymLinks
Indexes の役割は、そのディレクトリに index.html ファイルが存在しない場合にディレクトリ構造を表示することです。Indexes を削除すると、Apache はそのディレクトリのリストを表示しません。
備考:Indexes の前に + を追加すると、ディレクトリのブラウズが許可されます。- を追加すると、ディレクトリのブラウズが禁止されます。
上記の情報は、以下のサイトから引用しました:http://blog.chemdown.cn/server/prohibit-display-apache-directory-listing-indexes-followsymlinks.html
.htaccess ファイルによる 403 Forbidden エラーの問題
WORDPRESS を使用したことがある方は、おそらくこの問題に遭遇したことがあるかもしれません。
例えば、zaphod22 さんはhttp://wordpress.org/support/topic/htaccess-leads-to-403-forbidden?replies=6 でこの問題に遭遇しました。
実際には、この問題は "Options Indexes FollowSymLinks" の設定が適切でないために発生します。もちろん、.ini ファイルを変更したくない場合は、
.htaccess ファイルに Options +FollowSymLinks ディレクティブを追加することもできます。
特に注意:.htaccess ファイルで使用される指示が有効になるには、ディレクトリの "AllowOverride All" が有効になっている必要があります。
また、.htaccess ファイルでリダイレクトを設定する方法については、公式ウェブサイトのドキュメントを参照してください:http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html