【问题标题】:Deny all access to a file but one ip | htaccess拒绝对文件的所有访问,但只有一个 ip | htaccess
【发布时间】:2012-11-15 18:17:42
【问题描述】:

我尝试了以下但不起作用(没有人可以访问文件,包括我希望它访问的 IP)

<Files something.php>
Order allow,deny
Deny from all
allow from zzz.zzz.zzz.zzz
</Files>

我想拒绝除一个 ip 之外的所有人访问文件,我该怎么做? 谢谢

【问题讨论】:

  • 真的很抱歉,但我是新手,你的意思是在 .htaccess 文件中吗?
  • 这组规则似乎没有什么问题。 ¿ 你的问题是什么?
  • 我的问题是代码不适合我,如果你说代码适合你,那不适合我的原因是什么......:S,谢谢!!
  • 代码应该在something.php所在目录下的.htaccess文件中。
  • 两者在同一个目录

标签: apache .htaccess


【解决方案1】:

我在较早的帖子中找到了我的答案,这里的答案之一:.htaccess: how to restrict access to a single file by IP?,正确的是:

 <Files something.php>
 Order deny, allow
 Deny from all
 allow from zzz.zzz.zzz.zzz
</Files>

从原来的我将“命令允许,拒绝”更改为“命令拒绝,允许”并且它有效!

【讨论】:

    【解决方案2】:

    它不起作用的原因是您的 Deny 指令覆盖了您的 Allow 指令。 Order Allow,Deny 所做的是:

    1. 评估Allow,如果匹配,则标记“允许”。
    2. 评估Deny,如果有任何匹配则标记“拒绝”(即使之前与Allow 匹配)
    3. 评估标志。如果未设置标志,则拒绝。

    因此,如果您不希望所有请求都被拒绝,必须删除 Deny from All。只是 MickeyRoush 的回答的注释。

    至于Order Deny,Allow,则是“对立面”:

    1. 评估Deny,如果匹配,则标记“拒绝”。
    2. 评估Allow,如果有任何匹配则标记“允许”(即使之前与Deny 匹配)
    3. 评估标志。如果未设置标志,则允许。

    有关更多信息,请参阅 MickeyRoush 提供的链接。

    【讨论】:

      【解决方案3】:

      实际上你使用的第一个指令会起作用,但它需要在正确的位置。

      Order Allow,Deny
      <Files something.php>
      Allow from zzz.zzz.zzz.zzz
      </Files>
      

      请注意,我删除了所有的拒绝,因为它不是必需的。

      http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-03
        • 2011-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-30
        • 2017-02-20
        • 2013-09-22
        相关资源
        最近更新 更多