SEO per siti multilingua: geolocalizzazione degli utenti

Difficoltà:    

Ci siamo quasi! Dopo aver completato l’inserimento dei tag hreflang e la creazione della sitemap e del robots.txt il nostro progetto multilingua è pronto a decollare.
Manca solo un ultimo tassello al puzzle: la geolocalizzazione degli utenti e il conseguente redirect alla pagina nella loro lingua.

Sebbene non si tratti di un aspetto strettamente collegato alla SEO e non sia un passaggio obbligatorio da eseguire, è sempre bene tenersi pronti ad un’eventuale richiesta in merito da parte del cliente (molto meno rara di quanto si creda!).
In questa guida scopriremo come gestire il redirect di lingua nel migliore dei modi senza incorrere in problemi tecnici o burocratici.

Cos’è la geolocalizzazione e come funziona

Geolocalizzare un utente significa tracciare la sua posizione geografica per reindirizzarlo automaticamente alla pagina del sito che corrisponde alla lingua del suo Paese, evitandogli di doverla selezionare manualmente e migliorando di conseguenza la user experience.
geolocalizzare
Esistono diversi metodi per estrapolare le coordinate geografiche in cui si trova l’utente, dalla localizzazione in HTML a quella eseguita tramite gli script.

Ho riportato di seguito solo quelli che ritengo più semplici da applicare, che non violano la normativa sui cookie e che generano il minor numero di problemi tecnici.

Nota sull’usabilità: molti webmaster che utilizzano la geolocalizzazione automatica spesso la sostituiscono in toto alla selezione manuale della lingua. Il mio personale consiglio è di lasciare comunque visibile il menù che permette ai visitatori di cambiare la lingua del sito.
La geolocalizzazione non è infallibile e qualcosa potrebbe sempre andare storto: l’utente potrebbe non autorizzarla, trovarsi in un Paese di cui non conosce l’idioma oppure usare una VPN che ne camuffi la posizione geografica. I casi in cui potrebbe non essere soddisfatto della pagina che gli viene automaticamente servita sono davvero innumerevoli, e proprio per non rischiare di perdere un potenziale cliente è sempre auspicabile mantenere nell’interfaccia il selettore di lingua.

Nota sul crawling e sui bot di Google: Google nelle sue linee guida ufficiali sconsiglia l’uso di redirect in base alla lingua o all’IP. Questo avvertimento è dovuto al fatto che un redirect male impostato rischia di bloccare l’accesso ai googlebot provenienti da un altro Paese, facendogli indicizzare soltanto la versione del sito nella lingua del Paese da cui provengono. Per questo motivo vi consiglio di farvi affiancare da un consulente SEO esperto in questo genere di operazione: un redirect ben fatto non crea alcun problema ed è utilissimo all’utente, ma uno sbagliato può rendere altre lingue del vostro sito invisibili ai motori di ricerca.

Indicazioni per la privacy policy

Gli script di geolocalizzazione possono essere catalogati sia come app di terze parti (plugin e script di servizi terzi) che come app proprietarie (script e applicazioni proprietari). In ognuno dei due casi, se utilizzate la geolocalizzazione è fondamentale aggiungere il seguente paragrafo (in questo caso generato da iubenda) alla privacy policy del vostro sito:

Geolocalizzazione
Questa Applicazione può raccogliere, usare e condividere i Dati relativi alla posizione geografica dell’Utente, al fine di fornire servizi basati sulla posizione stessa.
La maggior parte dei browser e dei dispositivi fornisce in modo predefinito degli strumenti per negare il tracciamento geografico. Qualora l’Utente abbia espressamente autorizzato tale possibilità, questa Applicazione può ricevere informazioni sulla sua effettiva posizione geografica.
Dati personali raccolti: Posizione geografica.

Metodo 1: Geolocalizzazione tramite plugin WordPress

Se per il vostro progetto multilingua avete utilizzato WordPress, sicuramente la soluzione più semplice e veloce è quella di affidarsi a un plugin.
I migliori (e gratuiti) sono i seguenti:

Tracciando l’indirizzo IP del visitatore (e di conseguenza anche le coordinate della sua posizione), automaticamente viene restituita la pagina associata alla lingua del Paese. Molto intuitivi sia nell’interfaccia che per la loro semplicità di utilizzo, sono sicuramente la via più veloce per geolocalizzare un utente senza dover mettere mano al codice.

Metodo 2: Geolocalizzazione con HTML e jQuery

L’HTML geolocation è un’API che sfrutta il tracciamento GPS del browser, facendo comparire una finestra di dialogo che chiede all’utente il permesso di inviare la propria posizione geografica al sito web che si sta visitando. Il visitatore del sito verrà quindi localizzato solo previa autorizzazione.

Eccone un esempio pratico:

Per attivarla è sufficiente inserire un breve script prima della chiusura del body della pagina:

<script>// <![CDATA[
var x = document.getElementById("demo");
function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else {
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}
function showPosition(position) {
    x.innerHTML = "Latitudine: " + position.coords.latitude + 
    "
Longitudine: " + position.coords.longitude; 
}
// ]]></script>

E richiamarla tramite HTML se necessario:

<button>Geolocalizzami!</button>
<p id="demo"></p>

I suoi vantaggi sono evidenti: è poco invasiva, rispetta la privacy, e non richiede di eseguire molto codice.
Com’è possibile però sfruttarla per eseguire un redirect? Grazie a IpInfo e ad uno script jQuery, è possibile reindirizzare il visitatore direttamente alla pagina desiderata subito dopo aver tracciato il suo IP.
Il codice da inserire è il seguente:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script><script>// <![CDATA[
    $(document).ready(function() {
        $.get("http://ipinfo.io", function(response) {
            console.log(response.ip, response.country);
            if (response.country == 'IT') {
                window.location.replace("http://www.iltuosito.com/it");
            }
        }, "jsonp");
    });
// ]]></script>

All’interno della condizione response.country == andrà inserito il codice corrispondente al Paese di vostro interesse, e all’interno di window.location.replace l’URL della pagina corrispondente alla lingua di quel Paese.

La pagina invia una richiesta a ipinfo.io e, se la risposta contiene il codice IT corrispondente all’Italia, il sito reindirizza automaticamente l’utente alla pagina in italiano (http://www.iltuosito.com/it).

Metodo 3: Reindirizzamento tramite Geodirection

GeoDirection è un servizio gratuito che sfrutta le API di GeoBytes. Il suo funzionamento è molto simile a quello dello script di ipinfo, reindirizzando all’occorrenza anche in base a città e regione.

In questo tutorial vengono fornite tutte le variabili necessarie per i vari casi.
Lo script che ho trovato più consono è sicuramente il seguente, che classifica i Paesi per lingua e associa ad ogni idioma la relativa pagina:

<script src="http://gd.geobytes.com/Gd?after=-1"></script><script>// <![CDATA[
var sSpanishLocations="ES,MX,GT,SV,HN,NI,CR,EC,PE,CU,DO,PR,PA,VE,CO,BO,AR,CL,PY,UY"; var sGermanLocations="DE,AT,CH"; var sFrenchLocations="FR,BE"; var sPhilippineLocations="PH"; var sKoreanLocations="KP,KR"; var sChineseLocations="CN"; if(typeof(sGeobytesLocationCode)!="undefined") { var sCountryCode=sGeobytesLocationCode.substring(0,2); if(sCountryCode!="US"&&sCountryCode!="CA") { if(sSpanishLocations.indexOf(sCountryCode)>=0)
      {
         // I visitatori di lingua spagnola verranno reindirizzati su questa pagina
         document.write("<META HTTP-EQUIV='Refresh' CONTENT='0; URL=/es'>");
      }else if(sGermanLocations.indexOf(sCountryCode)>=0)
      {
         // I visitatori di lingua tedesca verranno reindirizzati su questa pagina
         document.write("<META HTTP-EQUIV='Refresh' CONTENT='0; URL=/de'>");
      }else if(sFrenchLocations.indexOf(sCountryCode)>=0)
      {
         // I visitatori di lingua francese verranno reindirizzati su questa pagina
         document.write("<META HTTP-EQUIV='Refresh' CONTENT='0; URL=/fr'>");
      }else if(sPhilippineLocations.indexOf(sCountryCode)>=0)
      {
         // I visitatori dalle Filippine verranno reindirizzati su questa pagina
         document.write("<META HTTP-EQUIV='Refresh' CONTENT='0; URL=/ph'>");
      }else if(sKoreanLocations.indexOf(sCountryCode)>=0)
      {
         // I visitatori dalla Corea verranno reindirizzati su questa pagina
         document.write("<META HTTP-EQUIV='Refresh' CONTENT='0; URL=/ko'>");
      }else if(sChineseLocations.indexOf(sCountryCode)>=0)
      {
         // I visitatori dalla Cina verranno reindirizzati su questa pagina
         document.write("<META HTTP-EQUIV='Refresh' CONTENT='0; URL=/cn'>");
      }else
      {
         // Il resto del mondo verrà reindirizzato qui
         document.write("<META HTTP-EQUIV='Refresh' CONTENT='0; URL=/world'>");
      }
   }
}
// ]]></script>

Metodo 4: Content negotiation (Accept-language)

La content negotation è senza ombra di dubbio il metodo che preferisco.
Come ho accennato in uno dei primi paragrafi dell’articolo, geolocalizzare l’utente non significa necessariamente conoscere la sua lingua.
Attraverso una rete VPN o un proxy la geolocalizzazione riconoscerà sempre e solo la posizione dell’intermediario, l’IP potrebbe essere stato volutamente mascherato dall’utente per una questione di privacy o, molto più semplicemente, quest’ultimo potrebbe trovarsi in viaggio o in vacanza all’estero.

Per aggirare questi problemi è stata ideata la content negotiation, un meccanismo definito nella specifica HTTP che permette di servire diverse versioni di un documento dallo stesso URL, di modo che gli user agent possano specificare quale versione si adatta alle loro esigenze.
In parole povere, anziché tracciare la posizione dell’utente per poi determinarne la lingua, il browser dell’utente invia direttamente al server la sua lingua preferita tramite un header Accept-Language.

Come implementarla?

Contrariamente alla geolocalizzazione, che avviene tramite Javascript, la content negotiation è lato server e necessita solamente di questa dichiarazione nel file .htaccess :

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (it) [NC]
RewriteRule .* http://www.esempio.com/it [R,L]

Per generare il codice esatto in base alle lingue del vostro sito e ai relativi URL potete usare questo tool.

Altri metodi

Geolify.com (servizio dedicato alla geolocation per siti web. Offre un’interfaccia intuitiva che permette di non dover mettere mano al codice. Si può scegliere tra un pacchetto base gratuito o piani premium a pagamento)
Passare latitudine e longitudine a una variabile PHP (codice per passare latitudine e longitudine dell’utente ad un foglio dinamico PHP. Utile per generare una pagina personalizzata a seconda della posizione del visitatore)

Infografica riassuntiva (click per ingrandire):
geolocalizzazione infografica

Di Susanna Marsiglia

Blogger, content manager, SEO, web designer, a volte scrittrice analogica. Nerd repressa causa incompatibilità con la matematica. Mens sana in corpore pigro.

Commenti (5)
  1. Roberto 4 dicembre 2017 at 9:20

    Ciao Susanna, forse potresti aiutarmi..
    è possibile realizzare uno script per fare un redirect in base ad una città?
    Es., mi trovo a Milano = redirect http://milano.it
    Roma = redirect http://roma.it etc, etc..

    Grazie, saluti._
    Roberto

  2. Samuele Valerio 10 giugno 2016 at 13:55

    Ciao Susanna,
    non potevi essere più esaustiva di così, complimenti!
    Sono solito fare la geolocalizzazione tramite Js anche su WP per non appesantirlo con plugin, ma per un progetto complessivamente leggero ho deciso di velocizzare il tutto con IP2Location Redirection, veloce e intuitivo. Grazie per averlo segnalato!

  3. walter 4 maggio 2016 at 11:35

    Ciao, grazie e complimenti questi ottimi post sui siti multilingua.
    Ne sto creando uno in questi giorni, uso WordPress e il plugin Polylang per le lingue.
    Il sito è strutturato nomesito.com/it/ e nomesito.com/en/
    Il plugin ha un’opzione “Individua la lingua del browser” secondo te va attivata oppure no?
    Ho letto in rete che non è consigliato tu che ne pensi.
    Ultima domanda, uso Search Console e Google Analytics, devo creare 2 istanze per ogni tools per esempio nomesito.com/it/ e nomesito.com/en/ o basta un semplice nomesito.com/
    Grazie!
    Walter

    • Susanna Marsiglia 2 giugno 2016 at 14:32

      Ciao Walter, perdona il ritardo nella risposta.
      Non conosco quel plugin e non ho mai avuto occasione di utilizzarlo, ma solitamente il redirect basato sulla lingua del browser è una buona idea perché va quasi sempre sul sicuro a prescindere dalla location (ad esempio, io vivo in Irlanda ma ho browser in italiano), assicurati solo che questa funzionalità non vada in conflitto con il tema che stai usando, che è il tipo di problematica più diffuso con i plugin. Ho letto inoltre che genera un cookie per ricordare la lingua dell’utente durante le sessioni successive, assicurati di segnalarlo nella cookie policy. Per il resto, salvo appunto incompatibilità col codice, non dovrebbero esserci problemi.

      Per analytics ti consiglio due diverse istanze, più per questione di comodità che altro: con una sola ti ritroveresti a dover filtrare i risultati per lingua di volta in volta, molto meglio averli divisi in partenza 🙂

Lascia un commento

Il tuo indirizzo email non verrà pubblicato. I campi obbligatori sono segnalati *