レンタルサーバーなどの共有ホスティングでは、 index.html などのファイルが存在しないディレクトリにアクセスすると、ブラウザ上で index of/ という形でディレクトリ内のファイル一覧が表示されることがあります。
これは Apache サーバーのデフォルトの挙動 ですが、セキュリティの観点から望ましくありません。本記事では、ディレクトリ一覧の表示を無効にする簡単な方法を紹介します。
空の index.html を配置
ディレクトリ内に index.html が存在しない場合、空の index.html をアップロードすることで、ディレクトリ一覧の表示を防ぐことができます。
手順
index.html ファイルを各ディレクトリにアップロード。中身は空で構いません。
メリット
サーバーの動作に影響を与えず、手軽に設定可能。
ブラウザでアクセスされた際に 真っ白なページ が表示される。
デメリット
すべてのディレクトリに手動で index.html を配置する必要があるため、管理が手間になる。
.htaccess を使用する
.htaccess ファイルを使ってディレクトリ一覧の表示を禁止する方法です。
Options -Indexes を追加
.htaccess に以下の1行を追加します。
Options -Indexes
効果
index.html などのファイルが存在しない場合、 403 Forbidden エラーが表示される。
すべてのディレクトリに適用可能。
注意点
一部の レンタルサーバーでは Options -Indexes が制限されている 場合があります。
DirectoryIndex の設定
もし Options -Indexes が許可されていない場合、以下の .htaccess 設定を試してください。
<Files ~ "^\\.(htaccess|htpasswd)$">
deny from all
</Files>
効果
index.html 、 index.htm 、 index.php のいずれかが存在しない場合、 403 Forbidden エラーが発生する。
Index of/ の一覧表示を回避できる。
Apache 設定ファイル httpd.conf で制御する
VPS や専用サーバーを使用している場合、 Apache の設定ファイルを直接編集することで、ディレクトリ一覧の表示を無効にできます。ほとんどの場合、/etc/httpd/conf/httpd.conf
に存在します。
<Directory "/var/www/html">
Options -Indexes
</Directory>
設定を反映させるために Apache を再起動します。
systemctl restart httpd
効果
index.html などのファイルがない場合、 403 Forbidden エラーが表示され、 Index of/ の一覧は表示されない。
注意
共有レンタルサーバーでは httpd.conf の編集権限がないため、この方法は利用できないことが多い。
結論
レンタルサーバー・共有ホスティング
.htaccess で Options -Indexes を設定します。
使えない場合は index.html を配置。
VPS ・専用サーバー
httpd.conf を編集するのが最適。
環境に応じて適切な方法を選択し、ディレクトリ一覧の表示を防止しましょう!