Siirry pääsisältöön

Maakohtainen pääsyrajoitus sivustolle (geoblock)

Päivitetty tänään

Toisinaan voi ilmetä tarve estää vierailijan pääsy sivustolle tai ohjata tietylle sivulle sijainnin perusteella. Seravolla on mahdollisuus rajata sivustolle pääsyä erillisen HTTP-otsaketiedon (header) avulla.

Rajaa pääsyä PHP:lla tai nginx:llä

Seravon omalla HTTP-otsaketiedolla X-Seravo-Geo-Country-Code voit hallita pääsyä sivustolle tarkemmin.

Uudelleenohjaa vierailijat toiselle sivulle PHP:lla

Uudelleenohjaus (redirect) toiselle sivulle on käytännöllinen esimerkiksi silloin, kun halutaan ohjata tietystä maasta tuleva sivustovierailija sopivaan kieliversioon.

<?php 
if (isset($_SERVER['HTTP_X_SERAVO_GEO_COUNTRY_CODE'])) {
switch (strtolower($_SERVER['HTTP_X_SERAVO_GEO_COUNTRY_CODE'])) {

// Ohjaa suomenkielinen vierailija sivustolle esimerkki.fi case 'FI':
header("Location: https://esimerkki.fi");
exit();
// Ohjaa ruotsinkielinen vierailija sivustolle esimerkki.se case 'SE':
header("Location: https://esimerkki.se");
exit();

default:

// Älä tee mitään, jatka suorittamista WordPressissä break;
}
} else {
error_log("Error: X-Seravo-Geo-Country-Code header not found!");
}

Uudelleenohjaa vierailijat toiselle sivulle nginx:llä

Voit tehdä vastaavan uudelleenohjauksen myös HTTP-palvelimelle. Muokkaa esimerkin maatunnisteita halutun rajauksen toteuttamiseksi.

# Ohjaa suomenkielinen vierailija sivustolle esimerkki.fi 
if ($http_x_seravo_geo_country_code = "FI") {
return 301 https://esimerkki.fi;
}

# Ohjaa ruotsinkielinen vierailija sivustolle esimerkki.se
if ($http_x_seravo_geo_country_code = "SE") {
return 301 https://esimerkki.se;
}

Rajaukset kirjautumissivulla

Myös kirjautumissivulle voi määritellä maarajauksen. Koska rajaus voi estää myös oikeiden käyttäjien pääsyä sivustolle, suosittelemme maarajausten sijaan kaksivaiheisen tunnistautumisen (2FA) ja reCaptcha-lisäosien käyttöä kirjautumissivuilla mahdollisuuksien mukaan, sillä ne ovat tehokkaampi keino suojata kirjautumissivu.

Muokkaa alla olevan esimerkin maatunnisteita halutun rajauksen toteuttamiseksi.

location ~ /wp-login.php { 
if ( $http_x_seravo_geo_country_code !~* "(FI|SE|BG)" )
return 403;
}
}

Lisätietoja

Vastasiko tämä kysymykseesi?