使用htaccess拒绝目录列表


103

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

我想添加一个htaccess文件到/public_html/Davood/拒绝DirectoryListing在/Davood和子文件夹中,这可能吗?


3
我不明白为什么为什么Options All -Indexes没有几个答案!
Fr0zenFyr

1
@ Fr0zenFyr,这取决于Web服务器的配置,如果AllowOverride All可以的话
DJafari

Answers:



69

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

Options -Indexes

有更多信息。


是的,我认为-Indexes禁用了目录列表,相反,它阻止了文件夹中的所有内容……有人知道为什么吗?
Michael Fever 2015年

我所能想到的是服务器配置存在一些问题。尝试启用rewrite模块,并将目录设置为AllowOverride All。如果所有内容都已经到位,并且您的评论是正确的,那么我必须非常幸运,无法Options All -Indexes在不同服务器上的每个项目中工作。
Fr0zenFyr

35

如果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文件可以轻松删除或覆盖,并且可以防止目录列出。


8
尽管空文件没什么大不了的,但是更好的解决方案可能是使用符号链接,这样可以节省一些空间,并且如果他选择显示某种统一的消息,他只需要修改一个文件即可。而不是空白页。
daalbert

18

为了显示禁止的错误,请在您的.htaccess文件中包括以下几行:

Options -Indexes 

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

IndexOptions -FancyIndexing

如果我们不想显示某些特定的扩展名,则:

IndexIgnore *.zip *.css

1
.httaccess还是.htaccess
NaveenDA

8

选项-索引最 适合我,

这是.htaccess文件:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes <---- This Works for Me :)
    </IfModule>


   ....etc stuff

</IfModule>

之前: 在此处输入图片说明

之后:

在此处输入图片说明


4

有两种方法:

  1. 使用.htaccess: Options -Indexes

  2. 创建空白index.html


3
Options -Indexes

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

试试吧。


2

赞同

Options -Indexes

如果将主服务器配置为允许选项覆盖,则应该可以正常工作,但是如果不允许,这将隐藏列表中的所有文件(因此每个目录都显示为空):

IndexIgnore *

2

选项-索引为受保护的目录返回403禁止的错误。通过在htaccess中使用以下重定向,可以实现相同的行为:

RedirectMatch 403 ^/folder/?$ 

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

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

RewriteEngine on

RewriteRule ^folder/?$ - [F]

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.