“不需要 ip” .htaccess 在单个 ip 中不起作用

“不需要 ip” .htaccess 在单个 ip 中不起作用

我在 .htaccess 中阻止 IP 时遇到问题

我已经把

Require not ip 192.168.20.218

它可以起作用,但它会阻止整个网络而不是阻止单个 IP。

有人能解决这个问题吗?

我使用 Ubuntu 14.04.3 LTS 在 Apache 2.4 上运行

更新:场景是这样的,我在我的电脑上使用IP 192.168.20.218,我试图做一个测试来阻止这个IP地址,我试过:

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

它本应阻止我的访问,但它却仍然允许我访问该页面。如果我删除它,Require all granted它会阻止整个网络。

答案1

你不能使用否定指令本身来授权访问。如文档

Require通过使用选项,可以否定该指令的结果not。与其他否定授权指令一样<RequireNone>Require指令被否定时,它只能失败或返回中性结果,因此可能永远不会独立授权请求

您需要做类似下面的事情:

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

因此,您允许所有人并排除特定的 IP 地址。

容器<RequireAll>,顾名思义,要求所包含的所有内容都必须得到满足。

答案2

我遇到了这个问题。我忘了我有一个 nginx 反向代理。进入 apache 的 IP 是来自 nginx 的反向代理 IP。相反,我必须在反向代理中设置一个包含真实 IP 的自定义标头,然后在 .htaccess 中检查此标头,而不是检查 IP。

相关内容