在我的.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
等,但我认为,不pipe它在做什么,这是说允许然后允许它再次否认? 它只是没有意义,我不知道如果我应该从.htaccess中删除它,或纠正,如果错了? 我想第三个意思是拒绝访问.htaccess文件,但这个顺序允许然后拒绝似乎是第一次允许然后立即否认。
这是使用Apache配置指令的一个相当混乱的方式。
从技术上讲,第一位相当于
Allow From All
这是因为Order Deny,Allow
拒绝指令在Allow指令之前被评估。 在这种情况下,拒绝和允许冲突,但允许,最后评估将匹配任何用户,访问将被授予。
现在,只要说清楚,这种配置是不良的,应该不惜一切代价避免,因为它的界限不明确的行为。
Limit部分定义哪些HTTP方法可以访问包含.htaccess文件的目录。
在这里,GET和POST方法被允许访问,而PUT和DELETE方法被拒绝访问。 下面是一个链接,解释各种HTTP方法是什么: http : //www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
但是,只要没有自定义CGI脚本或者直接处理非标准方法(PUT和DELETE)的Apache模块,使用这些限制常常是没有用的,因为默认情况下,Apache根本不处理它们。
还必须注意的是,其他一些方法也可以通过限制来处理,即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>