我被要求阻止访问某个网站。 有两种方法,我知道我可以选择 - 1.在Apache的水平(这样的工具:http://www.ip2location.com/blockvisitorsbycountry.aspx),其生成与IP范围列表很长的htaccess文件。 我知道的另一种方式是使用PHP(无论是本地数据库,远程web服务还是仅仅像htaccess一样的列表)。 我的问题是什么更有效 - 我认为,如果我使用apache,它比PHP更快,但每个页面都被访问。 如果我使用PHP,我可以做一次并保存在会话中。 什么是更有效的方法? 谢谢!阻止国家的最佳途径
回答
您不必填写你的.htaccess
文件与成千上万的IP地址的行。相反,你可以安装一个C库和一个Apache模块来完成繁重的工作。
MaxMind提供了通常用于IP查找一个流行的免费数据库。他们的GeoLite2是一个免费的数据库,每月更新一次。如果您需要的话,他们的付费产品更准确,更新频率更高。
通过使用此数据库并安装它们的各种APIs
之一,您可以在您认为合适处理流量。
出于我们的目的,您需要安装C库API以及Apache模块。一旦那些正在和启用,将数据库文件的地方,然后你就可以建立与代码的国家集团,因为这在简单的.htaccess
或Apache config file
:
MaxMindDBEnable On
MaxMindDBFile DB /path/to/GeoIP/GeoLite2-Country.mmdb
MaxMindDBEnv MM_COUNTRY_CODE DB/country/iso_code
SetEnvIf MM_COUNTRY_CODE ^(RU|DE|FR) BlockCountry
Deny from env=BlockCountry
这将阻止俄罗斯,德国和法国。在这里获取双字母ISO国家代码。
这将超过您的服务器更好不必解析数以千计的文本行对.htaccess文件中的每个请求!
您确实需要高级访问您的服务器上安装该库和模块,所以这是对共享主机或者你没有一个VPS这样的访问没有好。
如果出于某种原因,您希望在文件夹级别使用特定的阻止规则,这也会起作用。
如果我可能会提出一个关于您的答案的问题 - 这是否意味着使用PHP +会话更有效?基本上我仍然会浏览大型数据库,无论是在.htaccess文件还是在外部文件中。 谢谢 – Yanipan
看到他们是不同的方式来实现你要找的东西,但我想上面的答案是最适合我的,我用MAXMind DB,它真的很不错 –
- 1. 获取国际国家ISD电话代码的最佳途径
- 2. 从地址获取城市,州和国家的最佳途径
- 3. 阻止国家的最佳解决方案?
- 4. 最佳途径
- 5. 最佳途径
- 6. 最佳途径
- 7. 最佳途径
- 8. 最佳途径?
- 9. 最佳途径中的R
- 10. CustomViewData的最佳途径?
- 11. .htaccess:阻止除一个国家以外的所有国家
- 12. 最佳途径,像@author
- 13. API和Rails - 最佳途径
- 14. 最佳途径深入
- 15. 最佳途径为了
- 16. 最佳解决途径
- 17. 最佳途径2008年
- 18. VBA项目国际化的最佳途径
- 19. 阻止支付宝付款的国家
- 20. 使用.htaccess阻止某个国家
- 21. iPhone中的彩信的最佳途径
- 22. 依赖注入(DI)的最佳途径
- 23. 分享数据的最佳途径
- 24. 多线程UI的最佳途径?
- 25. 发布Java文件的最佳途径
- 26. 翻译网站的最佳途径?
- 27. 完成任务的最佳途径
- 28. XAML游戏的最佳途径
- 29. 备份项目的最佳途径
- 30. 傅里叶变换的最佳途径
清楚,有点意思,好事的琐碎绕过 –
@Dagon - 我同意这不是做的最好的事情,这是很容易得到解决。 – Yanipan