如何在 Apache 2.4 上的 .htaccess 中阻止 IP

如何在 Apache 2.4 上的 .htaccess 中阻止 IP

我已经升级到 Apache 2.4,并且想要阻止某个 IP,可以通过在 Apache 2.2 上的 .htaccess 中使用以下命令来实现

Order Deny,Allow
Deny from 50.62.136.183

但是我如何在 Apache 2.4 上的 .htaccess 中实现相同的功能

答案1

这是另一种可接受的语法.htaccess文件:

<RequireAll>
Require all granted
Require not ip 50.62.136.183
</RequireAll>

建议在 2.4 版中使用此语法,因为 order-deny 语法并不总是有效,如下所示http://httpd.apache.org/docs/2.4/upgrading.html

答案2

Apache 2.4 在授权用户的方式上引入了重大变化。Apache 2.4 中的授权组件现在可以使用 Require 语法,该语法以前仅可用于身份验证。此更改简化了定义授权顺序的方式。2.4 版之前的规则集可能非常复杂。2.4 中的规则更具逻辑性,指定默认值,然后指定例外情况。如果您希望默认接受流量但希望阻止特定 IP,则规则将如下所示:

Require all granted
Require not ip 50.62.136.183

此规则将设置一条默认策略,即接受所有 IP,但来自 111.111.111.111 IP 地址的任何请求除外。

Apache 2.4 之前和之后的示例

Apache 2.2

<files somefile.php>
  order allow,deny
  deny from 50.62.136.183
</files>

Apache 2.4

<Files somefile.php>
Require all granted
Require not ip 50.62.136.183
</Files>

不要忘记阻止对您的 .htaccess 文件的访问,否则快速谷歌搜索可能会使您的网站易受攻击。我已包含 2.4 之前和 2.4 之后的配置。

Apache 2.2

# Prevent .htaccess files from being spidered or viewed via a web browser.
<FilesMatch "^\.ht">
  Order allow,deny
  Deny from all
  satisfy all
</FilesMatch>

Apache 2.4

# Prevent .htaccess files from being spidered or viewed via a web browser.
<Files ".ht*">
  Require all denied
</Files>

答案3

访问控制的配置已经改变,你可以在http://httpd.apache.org/docs/2.4/upgrading.html#access因此您应该使用 Require 指令:

Require all granted
Require not ip 50.62.136.183

如果您将其添加到您的.htaccess文件(或某个Directory部分)中,它应该会按您要求的方式工作。

答案4

我在 ionos 互助服务器上遇到了错误 500。PB 来自命令 order、allow、deny,这些命令不再起作用。我换了,因为 <RequireAll> Require all granted Require not ip 50.62.136.183 </RequireAll> 我尝试使用我自己的完整 IPV6,它可以工作......但我只能设置 IPV4 的开头,但不能设置 IPV6 !?(也许,IPV6 不像 IPV4 那样工作,因为第一个数字决定了一个国家,所以没有办法这样做......)所以,这有效<RequireAll> Require all granted Require not ip 50.62 </RequireAll> 但这不起作用: <RequireAll> Require all granted Require not ip 20a6:5bd2 </RequireAll>

相关内容