如何禁用目录浏览?
我想禁用/ galerias文件夹和所有子目录的目录浏览
/ galerias / 409的索引
* Parent Directory * i1269372986681.jpg * i1269372986682.jpg * i1269372988680.jpg
使用以下命令创build一个.htaccess文件:
Options -Indexes
最好的办法是使用webserver apache2来禁用它。 在我的Ubuntu 14.X – 打开/etc/apache2/apache2.conf
从
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
至
<Directory /var/www/> Options FollowSymLinks AllowOverride None Require all granted </Directory>
然后重新启动apache:
sudo service apache2 restart
这将禁止apache2服务的所有文件夹中的目录列表。
在/galerias
里编辑/创build一个.htaccess
文件:
Options -Indexes
目录浏览由mod_autoindex模块提供。
其中一个重要的事情就是设置一个安全的Apache Web服务器就是禁用目录浏览。 默认情况下,apache提供了这个function,但是除非你真的需要这个function,否则最好禁用它。 打开apache文件夹中的httpd.conf文件,find如下所示的行:
Options Includes Indexes FollowSymLinks MultiViews
然后删除单词索引并保存该文件。 重新启动Apache。 而已
除了前面提到的两个方法(编辑/etc/apache2/apache2.conf或者在.htaccess文件中添加Options -Indexes )之外,还有另外一个
a2dismod autoindex
之后重新启动apache2服务器
sudo service apache2 restart
您可以将一个名为index.html
的空文件放到您不想列出的每个目录中。 这有几个好处:
- 它(通常)在服务器上需要零configuration。
- 即使服务器pipe理员决定在服务器configuration中使用“AllowOverride None”,它也将继续工作。 (如果您使用
.htaccess
文件,这可能会导致许多“错误500 – 内部服务器错误”消息为您的用户!)。 - 它还允许您将文件从一台服务器移动到另一台服务器,而不必乱用Apacheconfiguration。
理论上,自动索引可能由不同的文件触发(这是由DirectoryIndex
选项控制的),但我还没有在现实世界中遇到这种情况。
这不是一个答案,只是我的经验:
在我的Ubuntu 12.04 apache2上,没有findapache2.conf或httpd.conf中的Indexes
,幸运的是我在sites-available/default
find了它。 删除后,现在它看不到目录列表。 可能必须为sites-available/default-ssl
。
要完成@ GauravKachhadiya的回答:
IndexIgnore *.jpg
意思是“只隐藏来自索引的.jpg扩展名文件。
IndexIgnore指令使用通配符expression式来匹配目录和文件。
-
星号字符,它匹配string中的任何字符,例如:foo或foo.extension,在下面的例子中,我们将closures目录列表,索引中不会出现任何文件或目录:
IndexIgnore *
或者如果你想隐藏文件的目录,那么我们可以使用
IndexIgnore *.php
* .php =>匹配以任何字符开头并以.php结尾的string
上面的例子隐藏了以.php结尾的所有文件
在你的代码中试试这个:
IndexIgnore *
试试这个.htaccess
:
IndexIgnore *.jpg
如果你select修改你的httpd.conf文件来解决这个问题,并且你有多个Options指令,那么你必须在每个指令前加一个 – 或者一个+。 例:
选项-Indexes + FollowSymLinks
打开你的.htaccess文件并input下面的代码
Options -Indexes
确保在input“Options -Indexes”单词后按ENTER键(如果使用Mac,则返回键),以便文件以空行结束。