拒绝使用 htaccess 列出目录

发布于 2024-11-05 16:58:26 字数 323 浏览 0 评论 0原文

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

我想将 htaccess 文件添加到 /public_html/Davood/ 中,以拒绝 /Davood 和子目录中的 DirectoryListing文件夹。有可能吗?

I have a folder, for example : /public_html/Davood/
and too many sub folder in folder, for example : /public_html/Davood/Test1/ , /public_html/Davood/Test1/Test/ , /public_html/Davood/Test2/ , ...

I want add a htaccess file into /public_html/Davood/ To deny DirectoryListing in /Davood and sub folders. It's possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

缱倦旧时光 2024-11-12 16:58:26

选项-索引应该能够防止目录列表。

如果您使用 .htaccess 文件,请确保您的主 apache 配置文件

Options -Indexes should work to prevent directory listings.

If you are using a .htaccess file make sure you have at least the "allowoverride options" setting in your main apache config file.

剪不断理还乱 2024-11-12 16:58:26

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

Options -Indexes

包含更多信息。

Try adding this to the .htaccess file in that directory.

Options -Indexes

This has more information.

温馨耳语 2024-11-12 16:58:26

如果 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文件可以轻松删除或覆盖,并且它们将使您的目录无法列出。

If Options -Indexes does not work as Bryan Drewery suggested, you could write a recursive method to create blank index.php files.

Place this inside of your base folder you wish to protect, you can name it whatever (I would recommend 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);
            }
        }
    }
}

?>

These blank index.php files can be easily deleted or overwritten, and they'll keep your directories from being listable.

夜无邪 2024-11-12 16:58:26

要显示禁止错误,请在 .htaccess 文件中包含这些行:

Options -Indexes 

如果我们想要对文件进行索引并显示一些信息,则使用:

IndexOptions -FancyIndexing

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

IndexIgnore *.zip *.css

For showing Forbidden error then include these lines in your .htaccess file:

Options -Indexes 

If we want to index our files and showing them with some information, then use:

IndexOptions -FancyIndexing

If we want for some particular extension not to show, then:

IndexIgnore *.zip *.css
苦妄 2024-11-12 16:58:26

Options -Indexes 非常适合我,

这里是 .htaccess 文件:

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


   ....etc stuff

</IfModule>

之前:在此处输入图像描述

之后:

在此处输入图像描述

Options -Indexes perfectly works for me ,

here is .htaccess file :

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


   ....etc stuff

</IfModule>

Before : enter image description here

After :

enter image description here

疾风者 2024-11-12 16:58:26

有两种方法:

  1. 使用.htaccess:Options -Indexes

  2. 创建空白index.html

There are two ways :

  1. using .htaccess : Options -Indexes

  2. create blank index.html

穿越时光隧道 2024-11-12 16:58:26
Options -Indexes

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

尝试一下。

Options -Indexes

I have to try create .htaccess file that current directory that i want to disallow directory index listing. But, sorry i don't know about recursive in .htaccess code.

Try it.

无法言说的痛 2024-11-12 16:58:26

同意

Options -Indexes

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

IndexIgnore *

Agree that

Options -Indexes

should work if the main server is configured to allow option overrides, but if not, this will hide all files from the listing (so every directory appears empty):

IndexIgnore *
寒尘 2024-11-12 16:58:26

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

RedirectMatch 403 ^/folder/?$ 

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

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

RewriteEngine on

RewriteRule ^folder/?$ - [F]

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

Options -Indexes returns a 403 forbidden error for a protected directory. The same behaviour can be achived by using the following Redirect in htaccess :

RedirectMatch 403 ^/folder/?$ 

This will return a forbidden error for example.com/folder/ .

You can also use mod-rewrite to forbid a request for folder.

RewriteEngine on

RewriteRule ^folder/?$ - [F]

If your htaccess is in the folder that you are going to forbid , change RewriteRule's pattern from ^folder/?$ to ^$ .

滥情空心 2024-11-12 16:58:26

首先,您需要一个 .htaccess 文件来防止目录列出。如果您的服务器上未启用 .htaccess,请启用它。在 apache 配置文件或虚拟主机文件中:

<Directory /var/www/html>
AllowOverride All
</Directory>

其中 /var/www/html 是根目录。这将允许在您的服务器上使用 .htaccess 文件。在 .htaccess 文件内,在顶部添加以下内容:

Options -Indexes

这将阻止目录的浏览/索引。

First, you need a .htaccess file to prevent directory listing. If .htaccess is not enabled on your server, enable it. Inside the apache configuration file or your virtual host file:

<Directory /var/www/html>
AllowOverride All
</Directory>

where /var/www/html is the root directory. This will enable the use of .htaccess file on your server. Inside the .htaccess file add the following at the top:

Options -Indexes

This will prevent the browsing/indexation of directories.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文