1

免得说我想阻止来自特定国家的访问者,写它的正确方法是什么?
我尝试使用deny from ip
,但这不是正确的方法。

4

5 回答 5

1

如果它必须是.htaccess文件,那么您可以使用ipinfodb.com上提供的自动生成器工具。您还可以使用地理定位服务的 API,例如: http: //freegeoip.net/static/index.html

于 2012-08-05T10:52:07.980 回答
1

正确的方法是不使用 htaccess,您可以使用已经填充的带有 ip 间隔的表进行一些 PHP 检查,告诉您哪个间隔受到哪个国家/地区的影响。

编辑:

如果要使用 htacces,则必须为deny from ip一个国家/地区的每个 ip 范围写一行(例如,如果您尝试阻止 10 个国家/地区,这可能会导致混乱,这就是为什么这是一个坏主意)。

于 2012-08-05T10:35:38.127 回答
0

使用 Apache 的 .htaccess 文件阻止特定网络非常容易。例如,添加...

从 221.140.10.0/24 拒绝

..将阻止来自 221.140.10.0 Class-C 网络的任何流量(AKA 斜线 24)。

因此,屏蔽特定国家只需找出这些国家的所有网络,然后创建一系列类似上述的条目。

此参考链接可能会对您有所帮助

于 2012-08-05T11:20:49.530 回答
0

您使用的任何方法都不会是完全证明的。用户可以使用代理使他们看起来与实际所处的地理位置不同。如果您阻止用户从某些区域访问您的站点至关重要,那么您将不得不考虑不同的身份验证方法(不依赖于 IP 地址)。

于 2012-08-05T10:53:33.137 回答
0

如果您完全关心性能,我建议您使用 PHP 扩展 API 。使用 PHP (C API) 扩展,您每秒可以获得超过 700 万次查询。众所周知,htaccess 具有性能副作用。

我在这里描述了如何编译扩展,以及如何使用 PHP 中的 mmdb 数据库通过 iso-3316 2 字符代码限制国家/地区:

使用 Kohana PHP 介绍 Maxmind GeoLite2

地理定位 IP 地址

于 2014-03-10T22:01:51.980 回答