正在重复"拒绝来自x.x.x.x"和#34;允许所有"正确

时间:2014-06-28 13:20:47

标签: apache .htaccess mod-authz-host

我使用以下语法来阻止我的.htaccess文件中的一些IP:

DirectoryIndex index.php
order allow,deny
deny from 17.18.19.0
deny from 18.17.19.1
allow from all

现在我不确定我是否可以使用它:

DirectoryIndex index.php
order allow,deny
deny from 18.17.19.1
allow from all
deny from 18.15.19.1
allow from all
deny from 18.18.19.1
allow from all

我可以重复这个结构吗?

deny from x.x.x.x
allow from all

为什么我要问?因为我发现php脚本只是在文件末尾附加deny而我不确定我是否需要"允许所有人#34;线。

可以这样吗?

DirectoryIndex index.php
order allow,deny
allow from all
deny from 17.18.19.0
deny from 18.17.19.1
deny from ... etc.

1 个答案:

答案 0 :(得分:2)

首先,this documentation page可以很好地解释事情。

以下引用来自mod_authz_host's documentation

  

Order指令,以及Allow和Deny指令,   控制三通门禁系统。第一次通过过程   或者所有允许或所有拒绝指令,由订单指定   指示。第二遍解析其余的指令(Deny或   允许)。第三遍适用于所有不匹配的请求   前两者中的任何一个。

     

请注意,处理所有Allow和Deny指令,与a不同   典型的防火墙,只使用第一个匹配。最后一场比赛   是有效的(也不像典型的防火墙)。另外,订单   其中的行出现在配置文件中并不重要 -   all允许行作为一个组处理,所有拒绝行都是   被视为另一个,默认状态是自己考虑的。

换句话说,如果你有Order Allow,Deny,它将首先处理所有Allow指令,然后处理所有Deny指令。您可能会发现,如果您有1个Allow from all或100个Allow from all指令,则无关紧要。最终结果是相同的,但是有100个指令,您的服务器将需要更多的时间处理。然后,它将处理所有拒绝指令并覆盖您刚才提供的权限。

因此,您只需要一个Order Allow,Deny指令和一个Allow from all指令。无论你使用什么脚本,都可以按照它认为合适的方式添加Deny指令,并且所有指令都可以正常工作。