レンタルサーバーを利用していると、リクエストされたディレクトリに 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