禁用的Apache目录索引不recursion应用,是我的configuration或理解错误?

我在Debian上运行Apache(2)。 我想禁用/ var / www目录及其任何子目录中的自动索引

在/etc/apache2/conf.d我把一个文件的内容如下:

<Directory /var/www> Options -Indexes </Directory> 

我的印象是,这个指令将被recursion地应用于/ var / www的任何子目录,但是访问(比如缺less一个index.html)/ var / www / someotherdir(即使在重新启动后也会给我一个目录内容的列表) apache(apache2ctl重新启动)。

我误解了这里的recursion,需要使用.htaccess文件吗?

最好的祝福! 🙂

编辑为互联网:

我通过我的“主”或“根”configuration文件/etc/apache2/apache2.conf,并find以下包含指令,按以下顺序:

 include mods-enabled/*.load include mods-enabled/*.conf include httpd.conf include ports.conf include conf.d/ include sites-enabled/ 

虽然大多数conf文件没有与/ var / www列表选项相关的任何内容,但启用了sites的dir拥有一个名为000-default的文件,该文件又保存了一个虚拟主机文章,为/ var指定了一些选项/ www dir。 喜欢这个:

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

根据http://httpd.apache.org/docs/current/sections.html#mergin上的指令合并顺序,似乎我在/ var / www的conf.d / myfile中的指令说明将被基于指向相同目录的虚拟主机指令和最后处理的虚拟主机指令的理由,启用站点启用/ 000默认指令。

从sites-enabled / 000-default文件中删除Indexes选项会closures/ var / www子树中的目录列表 。 所以从这个意义上说,一切都是合乎逻辑

还有一点点混淆,tho。 如果我在conf.d / myfile文件中包含一个特定目录的指令,比如说/ var / www / exampledir,则无论虚拟主机指令的内容如何,​​exampledir都将closures它的目录列表。 因此,稍后处理的指令似乎不会覆盖更具体的设置,即使设置较早。 我会试着举个例子:

在一种“pseduoconfiguration文件语法”中,假设我按以下顺序包含以下设置:

 index off on /var/www (in my conf.d file) index off on /var/www/exampledir (in my conf.d file) index on in /var/www (in 000-default file) 

那么看起来/ var / www将在除了/ var / www / exampledir之外的所有子目录中都有“index on”,其中指令已recursion应用。 所以看起来在000默认文件中的recursion设置不会影响更早的,更具体地命名的dir上的“索引on”。

或者,想一想,这可能意味着configuration文件指令被处理,如Apache文档链接中所述,从最短到最长,但是虚拟主机指令将在每个指定的目录中被最后处理,而不是在所有其他非虚拟主机指令,无论长度 (我到现在为止)。

啊,是的,这也许可以解释一些事情。 那么,如果有人读了这么多,祝贺你们,祝我们俩好运! 🙂

你的设置是正确的,应该像你期望的那样工作。 也许你正在覆盖Options -Indexes在你的目录树或另一个vHost的深处。

应该有一个统治所有的命令!

然后根据操作系统,httpd.conf或其他configuration文件应该只有“选项所有FollowSymLinks多视图”而不是“选项所有索引FollowSymLinks多视图”。

我想也许你正在寻找一个错误的术语(最好是棘手的)。 它被称为“目录列表”,而不是“索引”。