• User

    Redirect in base ad accept-language

    Ciao a tutti,
    avvio la mia prima discussione su connect.gt 🙂 per riprendere un argomento vecchio e già dibattuto, ovvero il redirect in base alla lingua del browser per un caso specifico.

    Un sito che seguo si trova in una situazione particolare che mi obbliga a riflettere sulla soluzione migliore e mi farebbe piacere avere dei parerei a riguardo.

    Il sito (B2B con target internazionale) ha nell'ultimo periodo molte visite provenienti da browser in lingua inglese, verso pagine in italiano. Parliamo di un 40% circa.

    Parecchie di queste visite sono dirette, provengono (immagino) da email dei commerciali che per disattenzione mandano la pagina senza impostare la lingua, altre arrivano da referral, mentre in altri casi stranamente arrivano dal canale seo.

    Attualmente il sito ha come lingua principale l'italiano e visto che l'azienda lavora molto sui mercati esteri, sarei propenso a procedere così:

    • se non è settato accept language, lascio sulla lingua di default (ITA)
    • se è presente accept language header, redirect su lingua del browser
    • lasciamo sempre la possibilità di cambiare lingua tramite menù.

    NOTA: sono presenti i corretti hreflang.

    Cosa ne pensate?
    grazie mille
    Paolo


    federico.sasso 1 Risposta
  • Moderatore

    @paolo-monge ciao.

    Non sono un grande fan del redirect basato su accept-language: troppo poco affidabile.

    Però se hai deciso di seguire tale via, ricordati di NON redirezionare le visita alla HP date da click interni, o sarebbe un incubo di usabilità.
    Di solito trovo più pratico capirlo tramite http referrer; laddove non fosse disponibile per scelta, puoi appoggiarti a variabili di sessione o cookies.

    Spero di esserti stato utile.


  • Super User

    Come sempre in questi casi la soluzione che suggerisco è un popup clientside basato sulla lingua del browser (da valutare quanto invasivo/blocccante) che inviti l'utente a cambiare la lingua se lo desidera, puntato molto banalmente alla versione alternativa della pagina nella lingua del browser corrente.

    Eviterei come la morte redirect server side di qualsiasi tipo, perché rischiano di causarti grossi problemi con Googlebot.


    lopinsjk 1 Risposta
  • User

    Grazie mille ad entrambi,
    pensare di lavorare clientside mi piace molto di più ed anche io normalmente non vorrei fare redirect a prescindere in base alla lingua, ma avendo questa situazione anomala mi sembrava una soluzione possibile.

    Cercherò di individuare le visite che possiamo considerare "anomale" in qualche modo e solo a queste presentare il popup di scelta così che sia meno fastidioso possibile.

    @kal extra caso specifico (ma per cultura SEO generale) anche se considero le sessioni dove accept language non è settato mi può portare problemi con Googlebot?

    grazie ancora
    Paolo


    kal 1 Risposta
  • Super User

    @paolo-monge ha detto in Redirect in base ad accept-language:

    @kal extra caso specifico (ma per cultura SEO generale) anche se considero le sessioni dove accept language non è settato mi può portare problemi con Googlebot?

    Guarda, da documentazione Googlebot non richiede accept-language.

    Quindi DOVREBBE essere possibile farlo.

    Ma c'è una versione precedente della documentazione che dice esattamente il contrario:

    If your site alters its content based on any Accept-Language field set by browsers’ HTTP headers, Googlebot uses a variety of signals to try to crawl your content using different Accept-Language HTTP headers. This means Google is more likely to discover, index, and rank your content in the different languages your site supports.

    Ho trovato una copia di quella pagina qua: https://brandee.edu.vn/locale-aware-crawling-by-googlebot/

    In definitiva: sei a rischio di spararti nel piede.

    Domani Google cambia idea di nuovo, tu non te ne accorgi, e finisci nei casini.

    Se invece lavori client-side, sei a posto.

    (tra l'altro potresti anche bloccare via robots.txt il JS che ti gestisce il popup di quel tipo... una forma di cloaking "morbido" coperta da Oliver Mason nel suo bell'intervento di quest'anno al Brighton SEO)


  • Super User

    Aggiungo: potrebbero esserci ancora delle versioni di Googlebot che usano il protocollo precedente... e quindi ti spari nel piede fin da subito. Per questo dovresti costantemente monitorare i log...

    Insomma: visto che ci sono soluzioni alternative decisamente valide, meglio evitare.


  • User

    Grazie @kal chiarissimo ed esaustivo.
    Procediamo via JS come mi suggerisci.

    grazie ancora
    Paolo


  • Moderatore

    @paolo-monge nella mia esperienza la stragrande maggioranza delle richieste da Googlebot sono tutt'ora fatte senza popolare accept-language (anzi occhio che ho visto più volte sviluppatori dare per scontato fosse sempre presente, col risultato di errori http 500 nel caso di visite da spider, che inibivano l'indicizzazione!).

    Circa un anno fa Google annunciò di poter occasionalmente usare accept-language e proxy su ip locali per risolvere problemi di siti che non avevano fatto i compiti a casa per benino (es differenziazioni linguistica basata su variabili di sessione invece che disambiguare gli URL,redirect errati, etc.).
    Nella pratica non l'ho mai visto attuato in nessun log di clienti.


  • User

    Ciao @federico-sasso arrivo un pò tardi, mi ero perso la risposta. Grazie mille 🙂


  • Moderatore

    @kal ha detto in Redirect in base ad accept-language:

    Come sempre in questi casi la soluzione che suggerisco è un popup clientside basato sulla lingua del browser (da valutare quanto invasivo/blocccante) che inviti l'utente a cambiare la lingua se lo desidera, puntato molto banalmente alla versione alternativa della pagina nella lingua del browser corrente.

    Eviterei come la morte redirect server side di qualsiasi tipo, perché rischiano di causarti grossi problemi con Googlebot.

    Sottoscrivo ogni parola.