ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

CentOS 7.4、Apache 2.4の環境でのディレクトリ内のファイルを一覧表示しない設定方法

CentOS 7.4、Apache 2.4の環境で、Webブラウザでアクセスすると、ディレクトリ内のファイルが一覧で表示されました。
index.htmlを配置すれば表示されなくなります。
サブディレクトリを作成して、サブディレクトリ内にindex.htmlを配置しなかったら、同じようにファイルが一覧で表示されます。

f:id:AJYA:20171019230402j:plain
photo credit: Nguyen Vu Hung (vuhung) CentOS 7 64bit 07 via photopin (license)

ディレクトリ内のファイルを一覧表示しない設定方法

対処として、Apachehttpd.confを編集します。

# vi /etc/httpd/conf/httpd.conf

/var/www/htmlを検索して書き換えます。
編集前

<Directory "/var/www/html">
    Options Indexes FollowSymLinks

編集後

<Directory "/var/www/html">
    Options -Indexes +FollowSymLinks

Apacheを再起動して完了です。

# systemctl restart httpd.service

注意点

こちらに警告として書かれていますが、Optionsの配下は1つでも+か-をつけたら、すべてに+から-をつけなければなりません。

警告
Options で + や - のついたものを、つけないものと組み合わせて指定する構文は、正しい構文ではありませんので、期待する結果にならないことがあります。

core - Apache HTTP Server Version 2.4

これを知らず、当初は以下のように変更してApacheを再起動しました。
結果はエラーが発生して、悩まされました。

    Options -Indexes FollowSymLinks