繁体   English   中英

.htaccess,命令允许,拒绝,拒绝所有人:困惑?

[英].htaccess, order allow, deny, deny from all: confused?

在我的.htaccess中,我有以下内容:

<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
<Files .htaccess>
order allow,deny
deny from all
</Files>

现在,我只是愚蠢还是错了? 我在线查看并在Apache文档中,并不理解limit get post put delete等但我认为无论它正在做什么它是说允许然后允许它再次否定? 它对我来说没有意义,我不确定是否应该从.htaccess中删除它,或者如果错误则更正它? 我想第三个意味着拒绝访问.htaccess文件,但是这个顺序允许然后拒绝似乎它首先允许然后立即拒绝。

这是一种使用Apache配置指令的相当混乱的方式。

从技术上讲,第一位相当于

Allow From All

这是因为Order Deny,Allow会在Allow Directives之前评估Deny指令。 在这种情况下,Deny和Allow相互冲突,但Allow,作为最后一次评估将匹配任何用户,并且将授予访问权限。

现在,为了使事情清楚,这种配置是不好的,应该不惜一切代价避免,因为它接壤未定义的行为。

限制部分定义哪些HTTP方法可以访问包含.htaccess文件的目录。

这里,允许访问GET和POST方法,并拒绝PUT和DELETE方法访问。 这是一个解释各种HTTP方法的链接: http//www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

但是,只要您没有直接处理非标准方法(PUT和DELETE)的自定义CGI脚本或Apache模块,使用这些限制通常是无用的,因为默认情况下,Apache根本不处理它们。

还必须注意的是,存在一些其他方法也可以通过Limit来处理,即CONNECT,OPTIONS,PATCH,PROPFIND,PROPPATCH,MKCOL,COPY,MOVE,LOCK和UNLOCK。

最后一点也是无用的,因为任何正确配置的Apache安装都包含以下配置(对于Apache 2.2及更早版本):

#
# The following lines prevent .htaccess and .htpasswd files from being 
# viewed by Web clients. 
#
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

禁止访问以“.ht”开头的任何文件。

等效的Apache 2.4配置应如下所示:

<Files ~ "^\.ht">
    Require all denied
</Files>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM