【问题标题】:.htaccess to deny directory access.htaccess 拒绝目录访问
【发布时间】: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

【问题讨论】:

    标签: php apache .htaccess


    【解决方案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 文件中放入以下行

    拒绝所有

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

    允许所有人

    【讨论】:

    • 这不起作用,因为它还会限制文件被包含在内。
    猜你喜欢
    • 1970-01-01
    • 2012-08-02
    • 2016-10-18
    • 2017-11-15
    • 2017-10-03
    • 1970-01-01
    • 2015-01-26
    • 2011-04-17
    • 2013-11-11
    相关资源
    最近更新 更多