我已经升级到 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>