カテゴリー
ウェブ関連

ディレクトリへのアクセスでindex of/を表示させない

レンタルサーバを使用していると、ディレクトリに index.html がない場合、ファイル一覧が表示されることがあります。これを防ぐ方法として、空の index.html ファイルを設置するか、.htaccess ファイルを使用してアクセスを制限する方法があります。これにより、セキュリティリスクを減らし、不要なファイル一覧表示を防止できます。

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

執筆:R3098

WEBサービス構築・監修が生業です。WordPress 関連では Aurora Heatmap などのプラグイン開発も行っています。サイト運営者の力になりたいと考えます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

reCaptcha の認証期間が終了しました。ページを再読み込みしてください。