使用htaccess禁用除一个文件夹以外的所有目录列表?

时间:2014-02-01 21:59:34

标签: .htaccess

现在,我正在使用Options -Indexes隐藏对我网站上所有目录列表的访问权限。

然而,我发现我需要对特定文件夹进行目录访问:

../Resource/Other/

是否有任何方法可以将逻辑NOT规则应用于htaccess以允许访问某些文件夹,而默认情况下禁用目录访问?或者我是否必须从另一个角度接近它并全局启用目录列表,然后有选择地逐个文件夹禁用它们?

2 个答案:

答案 0 :(得分:5)

在要列出的文件夹中创建一个Options +Indexes的htaccess文件。

请务必删除所有索引文件。

答案 1 :(得分:2)

最简单的方法是全局禁用列表,然后允许列出其他列表。也就是说,默认情况下应设置虚拟主机,以便在删除“索引”选项时不列出目录。然后,您将添加一个Directory指令并设置“选项”以允许列出特定目录。

例如:

假设您有以下目录结构: / home / user / www(注意:www是文档根目录)。

进入www目录有appdir1,appdir2,app3目录,你想在你的virtualost中只列出appdir3:

<VirtualHost *:80>  
    DocumentRoot /home/user/www
    ServerName myserver.local

    <Directory /home/user/www/>
        Options FollowSymLinks MultiViews   
    </Directory>
</VirtualHost>

在这种情况下,目录列表不可能,禁止在文档根目录下的任何目录。 但是,如果添加其他Directory指令,则可以将目录列表设置为指定目录:

<VirtualHost *:80>  
    DocumentRoot /home/user/www
    ServerName myserver.local

    <Directory /home/user/www/>
        Options FollowSymLinks MultiViews   
    </Directory>

    <Directory /home/user/www/appdir3>
        Options Indexes
    </Directory>
</VirtualHost>

另一方面,您可以将.htaccess文件添加到您希望允许目录列表的目录中。 在/home/user/www/appdir3/.htaccess中添加:

Options +Indexes

此外,如果您运行的是Apache 2.4版本,则应该查看<If>指令。

<If> Directive