レンタルサーバを利用していると、リクエストされたディレクトリに index.html などのファイルが存在しない場合、ブラウザで index of/ という形でディレクトリ内のファイル一覧が表示されることがあります。
これは、Apacheサーバのデフォルト設定によるものですが、セキュリティの観点から見ても望ましくありません。
以下では、簡単にできる対処方法を紹介します。
専用・VPSサーバなどのホスティングサービスや自宅サーバなどでしたら、httpd.confを直接編集することで変更できます。
しかし、多くはレンタルサーバを使用されていることと思いますので、それ以外の方法での対処を紹介します。
空のindex.htmlを置く
index.html が存在しないディレクトリに、空の index.html ファイルをアップロードする方法です。この方法はサーバの動作に影響を与えないため、誰でも簡単に設定できます。
アクセスされた場合、真っ白なページが表示され、ディレクトリの内容が見えなくなります。
デメリットとして、すべてのディレクトリにこのファイルを配置する必要があり、手間がかかります。
.htaccessでアクセスを制限する
次は.htaccessを使ってindex.htmlが存在しないディレクトリへのアクセスを制限する方法です。
通常のApacheサーバであれば、下の1行で制限できます。
Options -Indexes
ただし、一部のレンタルサーバでは、この Options コマンドが制限されている場合があります。
その場合は以下のコードを .htaccess に追加して、特定のファイルがない場合に403エラーを返すように設定することが可能です。
もしOptions -Indexes
を使用した際に Internal Server Error が発生する場合、そのサーバでは Options の使用が許可されていない可能性があります。
この場合はつぎの代替方法を試してください。
これは *.html/*.htm/*.php を規定ファイルとして定義するというもので、該当ディレクトリへのアクセスにおいて、これらのファイルがなかった場合には index of/ は表示されず、403エラーとなります。
<Files ~ "^.(htaccess|htpasswd)$">
deny from all
</Files>
DirectoryIndex index.html .ht
DirectoryIndex index.htm .ht
DirectoryIndex index.php .ht