我如何按国家阻止访客?(Htaccess)

时间:2012-08-05 10:33:08

标签: php .htaccess

少说我想阻止来自特定国家/地区的访问者,编写它的正确方法是什么?
我试图使用deny from ip
但这不是正确的做法。

5 个答案:

答案 0 :(得分:1)

正确的方法是不使用htaccess,你可以使用已填充的表格进行一些PHP检查,其中ip间隔会告诉你哪个时间间隔会影响到哪个国家/地区。

修改

如果你想使用htacces,你必须为一个国家的每个ip范围写一个deny from ip行(例如,如果你试图阻止10个国家,这可能会导致一团糟,这就是为什么这是一个坏主意。)

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

  

拒绝221.140.10.0/24

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

因此,阻止特定国家/地区只需查找这些国家/地区的所有网络,然后创建一系列条目,如上所述。

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

答案 4 :(得分:0)

如果您对performance感到担忧,我建议您使用PHP Extension API。使用PHP(C API)扩展,您每秒可以获得超过700万次查询。众所周知,htaccess会产生性能副作用。

我将介绍如何编译扩展,以及如何使用PHP中的mmdb数据库通过iso-3316双字符代码限制国家/地区:

Intro to Maxmind GeoLite2 with Kohana PHP

Geolocate IP Address