我在 .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。