有没有办法使用.htaccess来阻止访问一个国家?
我被要求让我们的服务器不允许请求从美国下载某个文件。 从任何其他国家下载都没问题。
有没有办法在.htaccess文件中做到这一点?
如果你正在使用Apache,看看mod_geoip 。 从他们的例子,你可以configuration它像这样的东西:
GeoIPEnable On GeoIPDBFile /path/to/GeoIP.dat SetEnvIf GEOIP_COUNTRY_CODE US BlockCountry # ... place more countries here Deny from env=BlockCountry
我非常肯定,你不可能完全有效地做到这一点。 即使您确实find了一种基于IP或提供商的限制方法,我仍然可以通过“允许”位置的代理服务器来获取文件。
可能有更可靠的方法,但是通过对请求者进行IP查询并拒绝那些是美国IP的用户可以closures。
请注意,这是远远不够充分的证据,如果请求者是这样做的,很容易规避。
你可以通过不同程度的可靠性来检测国家的IP地址,然后在Apache中使用.htaccess来阻止它。
请参阅Htaccess国家/地区块API中的示例
您将需要使用Geo智能数据提供程序。 我相信mod_geoip Apache模块的数据由MaxMind提供,但根据您的预算和需求,它们是更准确/可靠的解决scheme。
数据提供者包括:
数字特使 – 被视为行业领袖
的MaxMind
Quova提供
如果您需要过滤或更改更细粒度的数据上的内容,所有提供商都有多个可用的数据级别,包括IP域,连接速度,时区等。 根据提供者的不同,访问数据的方式有多种,无论是通过API加载到自己的数据库中的平面文件,还是通过API或Web服务加载的内部服务器。
您将需要确保按照定期(即每周)的方式更新IP地址,因为IP地址的更改频率非常高。
这是一个古老的问题,但如果它再次出现 – 你需要考虑在世界的另一个地方使用代理来访问你可能无法直接访问的网站和文件。 因此,这样的限制几乎是毫无意义的,可能需要考虑的法律问题。