【问题标题】:Disable directory listings in all but one folder, using htaccess?使用 htaccess 在除一个文件夹之外的所有文件夹中禁用目录列表?
【发布时间】:2014-02-01 21:59:33
【问题描述】:

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

然而,我发现我需要对特定文件夹的目录访问权限:

../Resource/Other/

有什么方法可以将逻辑 NOT 规则应用于 htaccess 以允许访问某些文件夹,同时默认禁用目录访问?还是我必须从另一个角度接近它并全局启用目录列表,然后逐个文件夹选择性地禁用它们?

【问题讨论】:

  • 只需将另一个 允许 的 .htaccess 放入该特定文件夹...

标签: .htaccess


【解决方案1】:

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

一定要删除所有索引文件。

【讨论】:

    【解决方案2】:

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

    例如:

    假设您有以下目录结构: /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>
    

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

    <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+ 版,您应该查看&lt;If&gt; 指令。

    &lt;If&gt; Directive

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 2014-01-08
      • 2011-11-22
      • 2013-07-25
      • 2018-05-19
      • 1970-01-01
      相关资源
      最近更新 更多