htaccess 命令拒绝,允许规则

kai*_*der 5 .htaccess apache-2.2

我想通过 htaccess 将 IP 动态添加到阻止列表中。我希望有人能告诉我以下是否适用于我的情况(我不确定如何通过 localhost 进行测试)。

默认情况下,我的 .htaccess 文件将包含以下内容:

order allow,deny
allow from all
Run Code Online (Sandbox Code Playgroud)

IP 将被动态附加:

Order Deny,Allow
Allow from all
Deny from 192.168.30.1
Run Code Online (Sandbox Code Playgroud)

我理解这一点的方式是默认情况下允许所有人使用拒绝规则的可选列表。如果我没记错Order Deny,Allow会先看拒绝列表,这样对吗?

Allow from all 规则是否需要放在最后?

编辑 1

如果我没记错的话,我需要根据 jeffatrackaid 的回答执行此操作:

Order Allow,Deny
Allow from all
Deny from 192.168.30.1
Run Code Online (Sandbox Code Playgroud)

编辑 2

为了完整起见,这可能更适合我的要求:

Order Deny,Allow
Deny from 192.168.30.1
Run Code Online (Sandbox Code Playgroud)

jef*_*aid 7

此规则允许所有人进入您的站点。

Order Deny,Allow
Allow from all
Deny from 192.168.30.1
Run Code Online (Sandbox Code Playgroud)

Order指令确定处理规则的顺序。与Order deny,allow拒绝列表将首先处理,然后允许列表中。

使用 Apache,所有规则都被处理,最后一个匹配是有效规则。

所以在这种情况下,你的最后一条规则是allow from all.

这意味着192.168.30.1最初会被拒绝,但后来被允许,因为最后处理允许规则。

这将产生相同的结果

Order Deny,Allow
Allow from all
Deny from 192.168.30.1
Allow from 192.168.30.1
Run Code Online (Sandbox Code Playgroud)

这么想吧。

  • 允许/拒绝规则只是要允许/拒绝的 IP 的单独列表。
  • order指令确定处理这些列表的顺序。
  • Apache 评估所有规则并根据最后一个匹配规则的结果采取行动。

主要的困惑在于,这与防火墙的工作方式大不相同,在防火墙中,规则顺序和第一个匹配通常是决定访问的因素。

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