This configuration explains how to redirect or block web traffic based on the visitor's geographical location by using Apache’s geoip mod.
Apache mod_geoip installation
Assuming that you already have Apache web server installed and running we start by the installation of mod_geoip:
UBUNTU/DEBIAN
# apt-get install libapache2-mod-geoip
Confirm that geoip and rewrite module is enabled:
# apache2ctl -M | grep -E "geoip|rewrite"
geoip_module (shared)
rewrite_module (shared)
If the above command does not produce any output or only single mod is listed enable missing module with the following linux command:
# a2enmod geoip rewrite
Enabling module geoip.
Enabling module rewrite.
To activate the new configuration, you need to run:
# service apache2 restart
and restart Apache web server to apply the changes:
# service apache2 restart
Redirect traffic based on the multiple country geographical location
Now that we have mod_geoip enabled we can edit a relevant site’s configuration file located in /etc/apache2/sites-available/ or corresponding .htaccess file to redirect traffic based on geographical location. In the example below we are going to redirect all incoming traffic from China and India to new URL http://example.com:
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CN|IN)$
RewriteRule ^(.*)$ http://example.com/$1 [L]
Please note that if you insert the above configuration into site’s configuration file you well be required to restart your apache web server to apply changes:
# service apache2 reload
Block traffic based on the country geographical location
If you decide to block incoming traffic based on the country's geographical location you can do so by editing a relevant site’s configuration file located in /etc/apache2/sites-available/. The below mod_geoip configuration will block China and India countries:
<Location />
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE IN BlockCountry
Deny from env=BlockCountry
</Location>
Apache reload is required to apply the above changes. Alternatively the the above you can also insert the following lines into your corresponding .htaccess file:
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE IN BlockCountry
Deny from env=BlockCountry
Redirect traffic based on the single country
Here in the example below we are going to redirect all incoming traffic from Singapore to a new URL. You can do so by editing a relevant site’s configuration file located in /etc/apache2/sites-available/.
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^SG$
RewriteRule ^(.*)$ http://example.com/$1 [L]
Now you will be required to restart your apache web server to apply changes:
# service apache2 reload
If you still have queries while performing the above process of redirecting or blocking traffic from geolocation through GeoIP
Contact us for administrator support our experts are ready to help you.
Appendix
ISO 3166 Country Codes
List of ISO 3166 Country Codes to be used with GeoIP apache module:
A1 - "Anonymous Proxy"
A2 - "Satellite Provider"
O1 - "Other Country"
AD - "Andorra"
AE - "United Arab Emirates"
AF - "Afghanistan"
AG - "Antigua and Barbuda"
AI - "Anguilla"
AL - "Albania"
AM - "Armenia"
AO - "Angola"
AP - "Asia/Pacific Region"
AQ - "Antarctica"
AR - "Argentina"
AS - "American Samoa"
AT - "Austria"
AU - "Australia"
AW - "Aruba"
AX - "Aland Islands"
AZ - "Azerbaijan"
BA - "Bosnia and Herzegovina"
BB - "Barbados"
BD - "Bangladesh"
BE - "Belgium"
BF - "Burkina Faso"
BG - "Bulgaria"
BH - "Bahrain"
BI - "Burundi"
BJ - "Benin"
BL - "Saint Bartelemey"
BM - "Bermuda"
BN - "Brunei Darussalam"
BO - "Bolivia"
BQ - "Bonaire - Saint Eustatius and Saba"
BR - "Brazil"
BS - "Bahamas"
BT - "Bhutan"
BV - "Bouvet Island"
BW - "Botswana"
BY - "Belarus"
BZ - "Belize"
CA - "Canada"
CC - "Cocos (Keeling) Islands"
CD - "Congo - The Democratic Republic of the"
CF - "Central African Republic"
CG - "Congo"
CH - "Switzerland"
CI - "Cote d'Ivoire"
CK - "Cook Islands"
CL - "Chile"
CM - "Cameroon"
CN - "China"
CO - "Colombia"
CR - "Costa Rica"
CU - "Cuba"
CV - "Cape Verde"
CW - "Curacao"
CX - "Christmas Island"
CY - "Cyprus"
CZ - "Czech Republic"
DE - "Germany"
DJ - "Djibouti"
DK - "Denmark"
DM - "Dominica"
DO - "Dominican Republic"
DZ - "Algeria"
EC - "Ecuador"
EE - "Estonia"
EG - "Egypt"
EH - "Western Sahara"
ER - "Eritrea"
ES - "Spain"
ET - "Ethiopia"
EU - "Europe"
FI - "Finland"
FJ - "Fiji"
FK - "Falkland Islands (Malvinas)"
FM - "Micronesia - Federated States of"
FO - "Faroe Islands"
FR - "France"
GA - "Gabon"
GB - "United Kingdom"
GD - "Grenada"
GE - "Georgia"
GF - "French Guiana"
GG - "Guernsey"
GH - "Ghana"
GI - "Gibraltar"
GL - "Greenland"
GM - "Gambia"
GN - "Guinea"
GP - "Guadeloupe"
GQ - "Equatorial Guinea"
GR - "Greece"
GS - "South Georgia and the South Sandwich Islands"
GT - "Guatemala"
GU - "Guam"
GW - "Guinea-Bissau"
GY - "Guyana"
HK - "Hong Kong"
HM - "Heard Island and McDonald Islands"
HN - "Honduras"
HR - "Croatia"
HT - "Haiti"
HU - "Hungary"
ID - "Indonesia"
IE - "Ireland"
IL - "Israel"
IM - "Isle of Man"
IN - "India"
IO - "British Indian Ocean Territory"
IQ - "Iraq"
IR - "Iran - Islamic Republic of"
IS - "Iceland"
IT - "Italy"
JE - "Jersey"
JM - "Jamaica"
JO - "Jordan"
JP - "Japan"
KE - "Kenya"
KG - "Kyrgyzstan"
KH - "Cambodia"
KI - "Kiribati"
KM - "Comoros"
KN - "Saint Kitts and Nevis"
KP - "Korea - Democratic People's Republic of"
KR - "Korea - Republic of"
KW - "Kuwait"
KY - "Cayman Islands"
KZ - "Kazakhstan"
LA - "Lao People's Democratic Republic"
LB - "Lebanon"
LC - "Saint Lucia"
LI - "Liechtenstein"
LK - "Sri Lanka"
LR - "Liberia"
LS - "Lesotho"
LT - "Lithuania"
LU - "Luxembourg"
LV - "Latvia"
LY - "Libyan Arab Jamahiriya"
MA - "Morocco"
MC - "Monaco"
MD - "Moldova - Republic of"
ME - "Montenegro"
MF - "Saint Martin"
MG - "Madagascar"
MH - "Marshall Islands"
MK - "Macedonia"
ML - "Mali"
MM - "Myanmar"
MN - "Mongolia"
MO - "Macao"
MP - "Northern Mariana Islands"
MQ - "Martinique"
MR - "Mauritania"
MS - "Montserrat"
MT - "Malta"
MU - "Mauritius"
MV - "Maldives"
MW - "Malawi"
MX - "Mexico"
MY - "Malaysia"
MZ - "Mozambique"
NA - "Namibia"
NC - "New Caledonia"
NE - "Niger"
NF - "Norfolk Island"
NG - "Nigeria"
NI - "Nicaragua"
NL - "Netherlands"
NO - "Norway"
NP - "Nepal"
NR - "Nauru"
NU - "Niue"
NZ - "New Zealand"
OM - "Oman"
PA - "Panama"
PE - "Peru"
PF - "French Polynesia"
PG - "Papua New Guinea"
PH - "Philippines"
PK - "Pakistan"
PL - "Poland"
PM - "Saint Pierre and Miquelon"
PN - "Pitcairn"
PR - "Puerto Rico"
PS - "Palestinian Territory"
PT - "Portugal"
PW - "Palau"
PY - "Paraguay"
QA - "Qatar"
RE - "Reunion"
RO - "Romania"
RS - "Serbia"
RU - "Russian Federation"
RW - "Rwanda"
SA - "Saudi Arabia"
SB - "Solomon Islands"
SC - "Seychelles"
SD - "Sudan"
SE - "Sweden"
SG - "Singapore"
SH - "Saint Helena"
SI - "Slovenia"
SJ - "Svalbard and Jan Mayen"
SK - "Slovakia"
SL - "Sierra Leone"
SM - "San Marino"
SN - "Senegal"
SO - "Somalia"
SR - "Suriname"
SS - "South Sudan"
ST - "Sao Tome and Principe"
SV - "El Salvador"
SX - "Sint Maarten"
SY - "Syrian Arab Republic"
SZ - "Swaziland"
TC - "Turks and Caicos Islands"
TD - "Chad"
TF - "French Southern Territories"
TG - "Togo"
TH - "Thailand"
TJ - "Tajikistan"
TK - "Tokelau"
TL - "Timor-Leste"
TM - "Turkmenistan"
TN - "Tunisia"
TO - "Tonga"
TR - "Turkey"
TT - "Trinidad and Tobago"
TV - "Tuvalu"
TW - "Taiwan"
TZ - "Tanzania - United Republic of"
UA - "Ukraine"
UG - "Uganda"
UM - "United States Minor Outlying Islands"
US - "United States"
UY - "Uruguay"
UZ - "Uzbekistan"
VA - "Holy See (Vatican City State)"
VC - "Saint Vincent and the Grenadines"
VE - "Venezuela"
VG - "Virgin Islands - British"
VI - "Virgin Islands - U.S."
VN - "Vietnam"
VU - "Vanuatu"
WF - "Wallis and Futuna"
WS - "Samoa"
YE - "Yemen"
YT - "Mayotte"
ZA - "South Africa"
ZM - "Zambia"
ZW - "Zimbabwe"
Serpent Consulting Services Pvt. Ltd is Odoo Gold Partner providing various Odoo services in more than 175+ countries. Our services include OdooTraining, OdooSupport, Odoo Migration, Odoo Customization, Odoo Implementation, Odoo Integration, Odoo Development, and offshore.
How can Odoo fit into your business? To know more, check our Demo Videos on our YouTube Channel