3

我尝试在我的 .htaccess 中配置一个简单的 IP 地址块。我遵循了我在这个论坛中找到的示例,这些示例似乎对其他用户有效,但对我不起作用,我真的不明白为什么。

我的 .htaccess 文件非常简单:

Order Allow,Deny
Allow from all
Deny from aaa.bbb.ccc.ddd

我预计配置的 IP 地址 (aaa.bbb.ccc.ddd) 将被阻止。但不幸的是,它没有被阻止。

如果我在 .htaccess 的第三行中设置“全部拒绝”,所有访问都会按预期被阻止。

因此,该指令似乎是由 Apache 读取的,但如果我设置了除“全部”之外的任何其他内容,即主机名或 IP 或 IP 通配符等,则不会发生阻塞。

我感谢任何帮助,为我指明正确的方向。

谢谢内斯特

4

5 回答 5

3

可能是一条红鲱鱼,但我想你的 .htaccess 块周围有标签?例如

<Limit GET POST>
  order allow,deny
  allow from all
  deny from 100.101.102.103
</Limit>

这就是我在我的一个网站上使用它的方式。

于 2014-04-09T19:55:17.897 回答
1

我最近遇到了一个类似的问题,这都是关于 IPv4 和 IPv6 的。查看您服务器的访问日志,并检查您的 IP 地址是如何记录的。您实际上可能正在阻止 IPv4 地址,同时使用您的 IPv6 地址(未被阻止)访问您的 Web 服务器。

如果您无权访问这些日志,只需尝试阻止 IPv6,就像您尝试阻止 IPv4 一样。您可以在这里找到您的 IPv6:http ://whatismyv6.com/

Order Allow, Deny
Allow From All
Deny From [Your-IPv4]
Deny From [Your-IPv6]
于 2014-04-09T20:11:30.923 回答
1

您确定您包含的 ip 地址是 Apache 看到的 ip 地址吗?如果服务器位于负载均衡器后面,它将看到负载均衡器地址。

为了克服这个问题,您需要检查 X-Forwarded-For 标头

        SetEnvIf X-Forwarded-For ^aaa\.bbb\.ccc\.ddd proxy_env
        Order allow,deny
        Satisfy Any
        deny from env=proxy_env

您显然可以通过查看日志来检查所看到的 IP 地址

于 2014-04-09T20:02:09.333 回答
0

经过一番搜索,我发现由于所有客户端首先被允许,然后被拒绝 htaccess 无法正常工作。我反向拒绝并允许在 .htaccess最终以这种方式解决:

Order Allow,Deny
Deny from aaa.bbb.ccc.ddd

以下 ip 禁止 403 和其他允许浏览。(如果 .htaccess 在当前目录中,则不需要目录标签)

希望能有所帮助

于 2019-12-16T17:22:56.320 回答
0

我遇到了同样的问题,然后发现 .htaccess 文件混合了换行符(CR 和一些 CRLF)。删除文件并使用正确的回车再次创建它

于 2018-01-30T00:38:45.997 回答