使用htaccess拒绝目录列表

时间:2011-05-09 04:50:06

标签: apache .htaccess

我有一个文件夹,例如:/public_html/Davood/ 和文件夹中的子文件夹太多,例如:/public_html/Davood/Test1//public_html/Davood/Test1/Test//public_html/Davood/Test2/,...

我想在/public_html/Davood/中添加一个htaccess文件要拒绝/Davood和子文件夹中的目录列表,这可能吗?

9 个答案:

答案 0 :(得分:102)

选项-Indexes 应该可以阻止目录列表。

如果您使用的是.htaccess文件,请确保主apache config file中至少有“allowoverride options”设置。

答案 1 :(得分:52)

尝试将其添加到该目录中的.htaccess文件中。

Options -Indexes

This有更多信息。

答案 2 :(得分:33)

如果Options -Indexes不能像Bryan Drewery所建议的那样工作,你可以编写一个递归方法来创建空白的index.php文件。

将它放在您想要保护的基本文件夹中,您可以为其命名(我建议使用index.php)

<?php

recurse(".");

function recurse($path){
    foreach(scandir($path) as $o){
        if($o != "." && $o != ".."){
            $full = $path . "/" . $o;
            if(is_dir($full)){
                if(!file_exists($full . "/index.php")){
                    file_put_contents($full . "/index.php", "");
                }
                recurse($full);
            }
        }
    }
}

?>

这些空白的index.php文件可以轻松删除或覆盖,它们会使您的目录无法列表。

答案 3 :(得分:15)

要显示Forbidden错误,请在.htaccess文件中包含以下行:

Options -Indexes 

如果我们想索引我们的文件并显示一些信息,请使用:

IndexOptions -FancyIndexing

如果我们想要某个特定的扩展名不显示,那么:

IndexIgnore *.zip *.css

答案 4 :(得分:3)

bc > temp.txt

我必须尝试创建.htaccess文件,即我想要禁止目录索引列出的当前目录。但是,抱歉,我不知道.htaccess代码中的递归。

试试吧。

答案 5 :(得分:3)

Options -Indexes 对我来说非常合适,

这是public String getInit() { return "" + firstName.charAt(0) + middleName.charAt(0) + lastName.charAt(0); } 文件:

.htaccess

之前:enter image description here

之后:

enter image description here

答案 6 :(得分:1)

选项-Indexes 会为受保护的目录返回403 forbidden错误。通过在htaccess中使用以下重定向可以获得相同的行为:

RedirectMatch 403 ^/folder/?$ 

这将为 example.com/folder / 返回禁用错误。

您还可以使用mod-rewrite禁止对文件夹的请求。

RewriteEngine on

RewriteRule ^folder/?$ - [F]

如果您的htaccess位于您要禁止的文件夹中,请将RewriteRule的模式从 ^ folder /?$ 更改为 ^ $

答案 7 :(得分:1)

有两种方法:

  1. 使用.htaccess:Options -Indexes

  2. 创建空白index.html

答案 8 :(得分:0)

同意

Options -Indexes
如果主服务器配置为允许选项覆盖,

应该有效,但如果没有,这将隐藏列表中的所有文件(因此每个目录都显示为空):

IndexIgnore *