.htaccess 拒绝目录访问

Posted

技术标签:

【中文标题】.htaccess 拒绝目录访问【英文标题】:.htaccess to deny directory access 【发布时间】:2017-03-17 13:58:36 【问题描述】:

我正在尝试限制对我根目录中的目录的访问,以便其他人无法直接在浏览器中访问这些目录中的文件。我现在遇到的问题是根目录中的页面,例如 index.php 要求输入密码,而 .htaccess 位于目录的根目录中,而不是域的根目录中。这会阻止索引文件从这些目录访问包含文件。

有什么简单的方法可以锁定这些目录,使其无法访问浏览器,同时仍允许根目录中的文件访问它们,并且访问者无需输入密码即可访问根页面。我希望他们知道他们的网站是可见的,但是,如果有人开始在子目录中窥探以窃取代码,它将拒绝他们,但允许页面访问它们。

在我一直想限制浏览器直接访问的每个目录中,我已经厌倦了这一点。

AuthType Basic
AuthName "Administrator"
AuthUserFile /home2/mesquiu0/.htpasswds./htpasswd
Require valid-user

Order Deny,Allow
Deny From All
Allow From 127.0.0.1

【问题讨论】:

【参考方案1】:

您需要做的就是添加以下行和一个额外的空行以禁用对目录的索引:

Options -Indexes

有关更多信息,请参阅文档:http://httpd.apache.org/docs/current/mod/core.html#options

【讨论】:

我也会试一试。我之前尝试过,清除缓存并重新启动浏览器,我仍然能够访问目录中的文件。我可能已经完成了+Indexes,所以这可能就是原因。感谢您的建议。 在目录和根目录中都试过这个,如果您右键单击索引或根目录中的任何文件并单击链接,它将在浏览器中显示该目录中的文件这就是我想要阻止的。任何人都可以直接从浏览器访问子目录,同时仍然允许根目录或其他子目录中的文件访问它们,这些文件可能会被包含在内。 更新,这适用于限制对目录的访问,但如果某些人查看文件的源并单击链接,例如样式表。它将允许他们查看该目录中的文件。如果我只是尝试查看目录结构,那么它会阻止它们。我需要它们不能访问目录中的文件,同时仍然允许文件包含在某些需要它们的文件中。【参考方案2】:

只允许匹配php、aspx等的脚本

阿帕奇 2.2

AuthType Basic
AuthName "Administrator"
AuthUserFile /home2/mesquiu0/.htpasswds./htpasswd
Require valid-user

#Forbid access to any files except from localhost, because of Order Deny,Allow, Allow gets applied later.
Order Deny,Allow
Deny from all
Allow from 127.0.0.1

#Allow access to files matching index.php
<Files index.php>
    Order Allow,Deny
    Allow from all
</Files>

在 Apache 2.4 中规则发生了变化,正确的语法是使用 Require all denied 而不是 Deny from all

这是针对 apache 2.4 的

AuthType Basic
AuthName "Administrator"
AuthUserFile /home2/mesquiu0/.htpasswds./htpasswd
Require valid-user

Require host 127.0.0.1

#Allow access to files matching index.php
<Files index.php>
    Require all granted
</Files>

【讨论】:

感谢您的建议,我会试一试。我的虚拟主机在 Apache 2.2 上,这令人惊讶,因为它们通常非常善于保持最新状态。只是一个小问题。我是否需要将它放在根目录或每个目录中,就像我现在拥有的一样,我假设如果我有多个文件扩展名,我只需添加一个 |添加一个新的? 我尝试了将它放在每个目录中以及在根目录中尝试。如果我把它放在目录中,它仍然不允许索引访问文件并且它要求登录。如果我将它放在根目录中,它会锁定整个站点。我只需要锁定目录,但仍然允许我选择登录这些目录,同时允许根目录中的文件访问这些子目录中的文件。 请立即查看!如果它仍然不起作用,我会要求您更新您的问题中的 htaccess 内容和目录结构。【参考方案3】:

在您的 .htaccess 文件中放入以下行

拒绝所有

如果你喜欢放例外,这个。

允许所有人

【讨论】:

这不起作用,因为它还会限制文件被包含在内。

以上是关于.htaccess 拒绝目录访问的主要内容,如果未能解决你的问题,请参考以下文章

拒绝访问 .htaccess 中的一个特定文件夹

拒绝使用 htaccess 直接访问文件

如何使用 htaccess 拒绝对文件夹的直接访问

.htaccess 拒绝所有-> 目录索引不起作用(拒绝所有和白名单文件)

拒绝访问 htaccess 中的多个文件

.htaccess 拒绝访问图像文件夹,但允许访问查看单个图像