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

7

我目前正在使用Options -Indexes来隐藏我的网站上所有目录清单的访问权限。

然而,我发现我需要访问一个特定的文件夹:

../资源/其他/

有没有办法在htaccess中应用逻辑非规则以允许访问某些文件夹,同时默认禁用目录访问权限?还是我必须从另一个角度来处理,全局启用目录清单,然后通过选择性禁用文件夹来禁用它们?


只需在该特定文件夹中放置另一个允许它的.htaccess即可... - CBroe
2个回答

10
在您想要列出的文件夹中创建一个带有Options +Indexes的htaccess文件。
确保同时删除任何索引文件。

3
几乎最简单的方法是全局禁用目录列表,然后允许列出其他目录。也就是说,您的虚拟主机默认应该不列出目录,当删除 "Indexes" 选项时。然后,您将添加一个目录指令,并将 "Options" 设置为允许列出特定目录。
例如:
假设您有以下目录结构: /home/user/www (注意:www 是文档根目录)。
在 www 目录中有 appdir1、appdir2 和 app3 目录,而您只想列出 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>指令

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接