A little bit of everything

元・情報系大学院生の備忘録

apache2でindex.htmlが無いときにディレクトリの中身を見せない設定

ブラウザでWebサーバのURLを打つとき、http://〜〜〜.html というように具体的なファイルを指定するのではなく、ディレクトリ名でアクセスした場合、デフォルトでは index.html をGETすることになっている。
つまり、サーバ側に index.html がないと、エラーになってしまう。エラーの際に、サーバの指定したディレクトリの中身が見えてしまう。これはセキュリティ的によくない。


そこで、index.html がない場合でも、ディレクトリの他のファイルが見えないような設定にする。設定ファイルは /etc/httpd/conf/httpd.conf とかに全部書かれているんじゃなく、/etc/apache2/ に複数ある。

/etc/apache2/sites-available/default の

<Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
</Directory>

という部分の、

Options Indexes FollowSymLinks MultiViews

の行を、

Options -Indexes FollowSymLinks MultiViews

とする。わかりにくいけど、"Indexes" を "-Indexes" と変更している。

こうすると、index.htmlがなくてもディレクトリの中身が見られなくなる。