@Federico Sasso said:
Ciao GAMERAMA,
Lo scenario è abbastanza comune e Google è in grado di gestirlo, l'importante è avere alcune attenzioni:
Ottimo, ovviamente immagino che per Google non sia la prima volta che debba affrontare un sito organizzato in questo modo.
Prima di tutto, Google - normalmente - non decora le proprie chiamate con Accept-Language. Pertanto è importante che il codice di backend ne preveda la mancanza (sarà banale, ma ho visto più e più volte indirizzi di root non indicizzati solo perché restituivano HTTP 500 a googlebot proprio perché il programmatore non aveva pensato a questo caso.
Simularlo è facile, in particolare da FireFox, basta togliere temporaneamente le lingue preferite nelle opzioni avanzate.
Vero, e ci avevo pensato, in effetti il codice che intercetta la chiamata al server da parte del browser ha come opzione di default l'italiano.
In questo modo, realizzando il trucco da te proposto il sistema funziona correttamente, ovvero riporta l'italiano entrando dalla root e non da una delle directory di lingua.
Ti consiglio nel caso user-agent che non esibisce Accept-Language di redirezionare verso la pagina/lingua che ritieni "primaria"; per esempio se il 90% dei tuoi utenti sono italiani, di fare il redirect verso la versione italiana; in tale modo Google mostrerà tale pagina nell'indirizzo di root / indicizzato.
Come spiegato sopra, è già così e pare funzionare bene.
È poi importante che il redirect - anche qui, sarà banale, ma meglio sempre precisarlo - sia un redirect temporaneo. Quindi HTTP 302, 303, o 307.
Ecco, in un certo senso è proprio questo che mi ha spinto a scrivere questo post; immaginavo uno scenario del genere ma non sapevo cosa scrivere, ovvero che tipo di richiesta dovevo inviare per evitare che Google capisse "fischi per fiaschi".
A questo punto? 302 Trovato (ovvero mosso temporaneamente), 303 Vedere altro o 307 Ridirezione temporanea?
Personalmente non amo molto i redirect basati su Accept-Language. Come giustamente ha fatto notare 2018, sono tanti gli utenti il cui browser dichiara in Accept-Language una lingua che non corrisponde in effetti alla lingua dell'utente.
Per alcune nazioni il fenomeno è particolarmente marcato - per esempio in Cina ci sono un sacco di installazioni Windows di licenza dubbia installate con default americani; in India molti dichiarano "en", e in percentuale ben pochi lo parlano, etc...
Anche in Italia sono una buona percentuale, specie in reti aziendali.
Perfettamente d'accordo, e infatti è previsto nella barra del menù, il link alla lingua dell'utente, per ora comunque solo italiano e inglese. Ah! Non ci sono bandierine ma solo testo.
In proposito mi chiedo se nel link è consigliabile inserire anche un hreflang, dato il cambio di lingua.
Altre accortezze ti consiglio:
Permettere sia all'utente di cambiare la lingua dopo il primo redirect (se proprio lo vuoi fare), sia di ricordare la preferenza linguistica dell'utente, così che non subisca nuovamente il redirect ogni volta visita il tuo sito.
Sì, fatto, come descritto sopra, sul cookie non sono del tutto d'accordo, vedremo, anche se è una cortesia indubbia non vorrei che venga considerata una invadenza della privacy.
Nel caso particolare in cui lasciassi la lingua "principale" nell'indirizzo di root, e le altre in sottocartelle (o sottodomini), abbi l'accortezza di non ripetere il redirect se la navigazione alla Home Page di root avviene tramite un link di navigazione interno (puoi facilmente capirlo paragonando l'attributo HTTP "Referer" (sic).
No, non avviene. Nella barra del menù il link alla homepage, punta sempre a quella presente nella cartella della lingua scelta o proposta.
Comunque, a questo punto mi viene anche da pensare che tra il link rel alternate messa nell'header delle pagine, quello x-default è comunque meglio che punti alla homepage della cartella o che non ci debba essere.
Spero di esserti stato utile.Assolutamente sì.