Jak skorzystać z mod_geoip?

Blokowanie użytkowników z danego kraju

Czasami zachodzi potrzeba zablokowania odwiedzin użytkowników z danego kraju na naszej stronie. Duża ilość niechcianych botów skanujących nasze strony pochodzi np. z Chin lub Rosji, dlatego też można użyć konfiguracji serwera by zablokować odwiedziny użytkowników z tych krajów. Moduł mod_geoip do Apache pozwala na podstawie adresu IP określić z jakiego kraju łączy się dany użytkownik. Mając taką wiedzę, możemy stworzyć czarną listę krajów, z których użytkownicy nie będą mieli dostępu do naszej strony.

Aby użyć mod_geoip na naszej stronie należy edytować jej plik .htaccess, który powinien znajdować się w głównym katalogu naszej strony. Jeśli taki plik nie istnieje, należy go utworzyć. Następnie doklejamy na jego końcu następujący kod:

 

GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry
Deny from env=BlockCountry

 

W pierwszych dwóch liniach zdefiniowaliśmy jakie kraje mają być blokowane używając kodu kraju. W przytoczonym przykładzie jest to CN – Chiny i RU – Rosja. Kody krajów można sprawdzić tutaj: https://pl.wikipedia.org/wiki/ISO_3166-1_alfa-2. Trzecia linia ustanawia blokadę dla wymienionych powyżej krajów.

 

Przekierowanie użytkowników z danego kraju na inną podstronę

Moduł mod_geoip oprócz blokowania użytkowników umożliwia dostosowanie zawartości strony w dla użytkowników z konkretnych krajów. W omawianym przykładzie przekierujemy użytkowników wyświetlających naszą stronę z USA oraz z Wielkiej Brytanii na inną podstronę, zawierającą anglojęzyczną wersję strony. W tym celu ponownie edytujemy plik .htaccess znajdujący się w głównym katalogu strony i doklejamy na jego końcu następującą zawartość:

 

RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(US|GB)$
RewriteRule ^(.*)$ http://www.mojadomena.com/en/$1 [L]

 

W linii drugiej definiujemy kraje, dla których reguła powinna zadziałać – kody krajów US i GB. Linia trzecia zapewnia przekierowanie na podstronę www.modjadomena.com/en gdzie znajduje się przygotowana wcześniej przez nas anglojęzyczna wersja strony.