2015-06-23 109 views
1

我被要求阻止訪問某個網站。 有兩種方法,我知道我可以選擇 - 1.在Apache的水平(這樣的工具:http://www.ip2location.com/blockvisitorsbycountry.aspx),其生成與IP範圍列表很長的htaccess文件。 我知道的另一種方式是使用PHP(無論是本地數據庫,遠程web服務還是僅僅像htaccess一樣的列表)。 我的問題是什麼更有效 - 我認爲,如果我使用apache,它比PHP更快,但每個頁面都被訪問。 如果我使用PHP,我可以做一次並保存在會話中。 什麼是更有效的方法? 謝謝!阻止國家的最佳途徑

+0

清楚,有點意思,好事的瑣碎繞過 –

+0

@Dagon - 我同意這不是做的最好的事情,這是很容易得到解決。 – Yanipan

回答

3

您不必填寫你的.htaccess文件與成千上萬的IP地址的行。相反,你可以安裝一個C庫和一個Apache模塊來完成繁重的工作。

MaxMind提供了通常用於IP查找一個流行的免費數據庫。他們的GeoLite2是一個免費的數據庫,每月更新一次。如果您需要的話,他們的付費產品更準確,更新頻率更高。

通過使用此數據庫並安裝它們的各種APIs之一,您可以在您認爲合適處理流量。

出於我們的目的,您需要安裝C庫API以及Apache模塊。一旦那些正在和啓用,將數據庫文件的地方,然後你就可以建立與代碼的國家集團,因爲這在簡單的.htaccessApache 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這樣的訪問沒有好。

如果出於某種原因,您希望在文件夾級別使用特定的阻止規則,這也會起作用。

Nice Article/Reference

+0

如果我可能會提出一個關於您的答案的問題 - 這是否意味着使用PHP +會話更有效?基本上我仍然會瀏覽大型數據庫,無論是在.htaccess文件還是在外部文件中。 謝謝 – Yanipan

+0

看到他們是不同的方式來實現你要找的東西,但我想上面的答案是最適合我的,我用MAXMind DB,它真的很不錯 –