• User Attivo

    Redirect in base alla lingua del browser

    Ciao a tutti 🙂
    Chiedo scusa se pongo una domanda già trattata, ho cercato, ma senza successo.

    Devo impostare una home-page multilingua, ecco come procederei:

    1. creo tanti sottodomini quante sono le lingue che mi interessano (it en de ecc)

    2. linko e gestisco ogni sottodominio di fatto come un sito indipendente

    3. nella home-page (www.sito, senza sottodomini) controllo la lingua impostata nel browser e faccio il redirect con 302 al sottodominio appropriato; redirect al sottodominio inglese per default.

    In questo modo, chi arriva su www.sito.tld dovrebbe arrivare automaticamente su sua_lingua.sito.tld.

    Sto facendo bene o sto sbagliando qualcosa? Uno spider vedrà sempre un redirect da www.sito a en.sito, www.sito scomparirà dalle serp?


  • Community Manager

    Ciao petro,

    questo è uno di quei quesiti dove le variabili sono tante.

    In generale, io cercherei di avere una barra grande e ben visibile in alto o a sinistra con tutte le Bandiere che puntano ai sottodomini.

    Giorgio


  • Super User

    @petro said:

    Sto facendo bene o sto sbagliando qualcosa? Uno spider vedrà sempre un redirect da www.sito a en.sito, www.sito scomparirà dalle serp?
    Stai facendo bene, però i link sulla home page mettili.

    Notare che quando Googlebot richiede un URL, può farlo inviando un header [url=http://www.google.com/search?q=googlebot+http_accept_language+inurl%3Aphpinfo]HTTP_ACCEPT_LANGUAGE.


  • User

    @petro said:

    Ciao a tutti 🙂
    3. nella home-page (www.sito, senza sottodomini) controllo la lingua impostata nel browser e faccio il redirect con 302 al sottodominio appropriato; redirect al sottodominio inglese per default.

    In questo modo, chi arriva su www.sito.tld dovrebbe arrivare automaticamente su sua_lingua.sito.tld.

    Io aggiungerei anche l'opzione d'inviare il browser ad una pagina standard (con redirect manuali) qualora non sia in grado d'interpretare lo script che fara' il redirect automatico.

    Sino a poco tempo fa usavo uno script PHP (/index.php) - che ho ancora e che funzionava molto bene - per il redirect automatico al mio sito trilingue. L'ho poi tolto perché non ero certo che fosse ben apprezzato dai motori di ricerca (ora la pagina di default è quella in lingua Giapponese), ma sto pensando di reintrodurlo qualora mi si convincesse che il mio è stato un timore infondato.

    Eviterei comunque di fare il redirect con Javascript perché non funzionerebbe con i browser con questa capacità disabilitata.


  • User Attivo

    Grazie Giorgio.

    La barra con la scelta della lingua ci sarà sicuramente in ogni sottodominio (magari con un link nofollow così da non linkare risorse in lingua diversa).

    La domanda è: nel sito principale www.sito.tld, cosa ci metto?
    Io avevo pensato a una soluzione di redirect automatico ad una data lingua, a seconda del browser.

    Oppure mi consigli di fare come http://www.easyjet.com/ (ma linkando i sottodomini invece di una index parametrizzata)?

    Pur spingendo i vari sottodomini linguistici, non vorrei buttare via il www, tutto qua 🙂


  • User Attivo

    Everfluxx: grazie della dritta su googlebot 😉
    Allora a questo punto farei così: i link all'interno della rete dei sottodomini restano con l'attributo nofollow, i link dal www verso i vari domini di 3° livello invece sono regolari.

    Mishima: userò un redirect lato server, per non sbagliare. Il codice a cui pensavo è HTTP 302 (Temporarily Moved), mi sembra quello più corretto in questo caso. No?


  • Super User

    @petro said:

    La domanda è: nel sito principale www.sito.tld, cosa ci metto?
    http://www.kelkoo.com/


  • User

    @petro said:

    Mishima: userò un redirect lato server, per non sbagliare. Il codice a cui pensavo è HTTP 302 (Temporarily Moved), mi sembra quello più corretto in questo caso. No?

    Non ho esperienza diretta in questo caso specifico, ma ovunque leggo che il redirect 302 è sconsigliabile perché fa capire al motore di ricerca che il link di destinazione non è stabile (appunto perché l'azione di spostamento è temporanea).

    Anche uno script PHP lavora lato server dal momento che viene elaborato dal programma PHP residente sul server.


  • User Attivo

    Mishima: sì, l'avrei fatto in PHP.

    Everfluxx: grazie della segnalazione, Kelkoo usa i redirect automatici in base alla lingua, proprio come volevo fare io 🙂
    In fondo alla pagina poi ci sono i link ai vari portali tradotti, ma senza nofollow.

    L'unica differenza è che se la lingua è inglese, mi propone la pagina di scelta. Ma penso che lo faccia perchè è un e-com (ragioni di cambi e vicinanza dei negozi), mentre io, che non ho questa esigenza, potrei anche lasciare redirect a en.sito.

    Così facendo, avrei www.sito buttato fuori dalle serp in favore di en.sito, giusto?


  • Super User

    @petro said:

    Everfluxx: grazie della segnalazione, Kelkoo usa i redirect automatici in base alla lingua, proprio come volevo fare io 🙂
    No, il redirect da www.kelkoo.com non avviene in base alla lingua del browser, ma in base a un cookie ("KelkooCountry") che memorizza la lingua precedentemente selezionata dall'utente: cancella il cookie e vedrai che www.kelkoo.com non farà più il redirect.


  • Super User

    petro, io farei come easyjet e farei fare il passaggio di pagina al visitatore, non in automatico. Il 302 poi non e' previsto certo per questo.

    Studiati un po' le welcome e anche le landing pages, che alla fine sono l'esasperazione della psicologia che porta l'utente a far qualcosa.

    Le welcome cercano di invitarti a entrare nel sito in questo caso nella lingua giusta.

    Mi raccomando l'immediatezza informativa della welcome e la rapidita' di caricamento, quindi poco codice, poche e semplici immagini.

    Un classico sarebbe bandierine con lingua sotto in originale e nome sito. Pochissimo altro.

    Naturalmente si punterebbe un po' meno sul posizionamento con fattori onpage perche' nn ce ne sono, anche questa e' una valutazione da fare.

    Naturalmente poi, come regola base, un particolare sito potrebbe essere beneficiato da una tecnica diversa, ma normalmente farei come sopra.


  • Super User

    @777 said:

    petro, io farei come easyjet e farei fare il passaggio di pagina al visitatore, non in automatico.
    www.easyjet.com fa la stessa identica cosa che fa Kelkoo: memorizza in un cookie la lingua scelta dall'utente (nome del cookie: "lang2005"), in modo da redirigerlo direttamente alla lingua precedentemente selezionata quando accede nuovamente a www.easyjet.com.

    Il 302 poi non e' previsto certo per questo.
    A mio avviso, invece, 302 è proprio il codice di stato appropriato per questo tipo di redirect (sia che il redirect avvenga in base a un cookie, sia che avvenga in base alla lingua del browser).


  • User

    @petro said:

    Grazie Giorgio.

    La barra con la scelta della lingua ci sarà sicuramente in ogni sottodominio (magari con un link nofollow così da non linkare risorse in lingua diversa).

    Stai molto attento a cosa fai, perche' potresti avere effetti collaterali "imprevisti".

    Per es:
    Se tuosito.com fa il redirect-automatico alla versione localizzata, la maggior parte dei link che riceverai, andranno al .com
    Se, inoltre, metti il "no follow" ai link dal .com alle versioni locali, rischi che I robot non li indicizzino per nulla (se non incontrano link senza "no follow" diretti alle versioni locali).
    Infine, I link cross-language tendono un po' a confondere i motori, specie se ricevi molti link da siti in lingue diverse tutti verso il .com
    Insomma e' una questione spinosa.

    @petro said:

    La domanda è: nel sito principale www.sito.tld, cosa ci metto?
    Io avevo pensato a una soluzione di redirect automatico ad una data lingua, a seconda del browser.

    Oppure mi consigli di fare come http://www.easyjet.com/ (ma linkando i sottodomini invece di una index parametrizzata)?

    Pur spingendo i vari sottodomini linguistici, non vorrei buttare via il www, tutto qua 🙂

    Puoi fare in modo che la prima volta mostri tutte le lingue (con i link ai domini specifici) ma salvi la scelta in un Cookie, cosi' quando lo stesso utente ritorna verra' automaticamente rediretto alla versione nella sua lingua.

    :ciauz:


  • User Attivo

    Riguardo a quale sarebbe il codice corretto da applicare, con ogni probabilità è il 300:

    10.3.1 300 Multiple Choices

    The requested resource corresponds to any one of a set of representations, each with its own specific location, and agent- driven negotiation information (section 12) is being provided so that the user (or user agent) can select a preferred representation and redirect its request to that location.

    Unless it was a HEAD request, the response SHOULD include an entity containing a list of resource characteristics and location(s) from which the user or user agent can choose the one most appropriate. The entity format is specified by the media type given in the Content- Type header field. Depending upon the format and the capabilities of the user agent, selection of the most appropriate choice MAY be performed automatically. However, this specification does not define any standard for such automatic selection.

    If the server has a preferred choice of representation, it SHOULD include the specific URI for that representation in the Location field; user agents MAY use the Location field value for automatic redirection. This response is cacheable unless indicated otherwise.
    ([url=http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html]fonte)

    D'altra parte, il W3C stesso usa questo code status per segnalare lo stesso documento in più lingue: [url=http://www.w3.org/WAI/wcag1AA-Conformance]qui

    Cosa ne dite? Potrebbe essere il code appropriato?

    In questo caso, si potrebbe fare come consiglia 777: personalizzare l'ErrorDocument 300, e presentare una pagina con intestazioni corrette ma anche veloce e che invogli a scegliere un link tra quelli localizzati proposti.


  • User Attivo

    @Ray71 said:

    Stai molto attento a cosa fai, perche' potresti avere effetti collaterali "imprevisti". (...)

    Uhm... questa cosa devo pensarla bene.
    A prescindere da tutto, comunque, i link che metto io (quelli spontanei dio solo sa dove punteranno) saranno distinti: link a it.sito dai siti italiani, link a en.sito per gli inglesi.

    @Ray71 said:

    Puoi fare in modo che la prima volta mostri tutte le lingue (con i link ai domini specifici) ma salvi la scelta in un Cookie, cosi' quando lo stesso utente ritorna verra' automaticamente rediretto alla versione nella sua lingua.

    Per fare così però non posso linkare direttamente la risorsa, ma devo linkare a uno script intermedio che salva il cookie e poi fa il redirect. I motori questo lo capiscono? Mi sembra che dopo BigDaddy Google riconosca come link validi anche questi, confermate?


  • Super User

    @petro said:

    D'altra parte, il W3C stesso usa questo code status per segnalare lo stesso documento in più lingue: [url=http://www.w3.org/WAI/wcag1AA-Conformance]qui
    Il codice 300 lo puoi restituire sulla home page (al posto del normale 200), quando non fai il redirect in base al cookie o all'accept-language (per il quale a mio avviso è appropriato un 302).


  • User Attivo

    Dunque, ricapitolando:

    1. C'è questa pagina di scelta del linguaggio, che restituisce un codice HTTP 300 Multiple Choices.

    2. Questa pagina è fatta come una welcome page: leggera, essenziale, carina da vedere, con le bandierine e i link alle varie versioni localizzate del sito.

    3. Link diretti e senza nofollow ai sottodomini. Quando ci arrivo, controllo se il referrer è la welcome page: in tal caso setto un cookie.

    4. Se vado nella pagina di scelta e trovo il cookie (=ho già scelto una lingua dalla welcome), fa un redirect 302 in automatico verso la lingua scelta.

    5. Questo è il punto critico:
      Se non c'è nessun cookie, tento di fare un redirect automatico in base ad Acccept-Language. In questo caso uso il 302 (giusto oppure no?)
      Se non ci riesco (non ho info sulla lingua), presento la welcome page.
      In alternativa, posso fare il redirect solo se il linguaggio è IT, e lasciare la scelta se è inglese o non settato. Che ne dite?

    6. Evito il più possibile link alla welcome page, in favore di link ai diversi sottodomini

    Se secondo voi non ci sono errori nei vari punti, possiamo discutere del 5.
    (poi magari tiriamo fuori una miniguida su come fare i siti multilingua in modo ottimale)


  • Super User
    • Il redirect in base al cookie è OK: in questo modo non rischi di redirigere anche i bot.
    • Bella l'idea di settare il cookie solo se il referer è la home page. 🙂
    • Il redirect in base all'accept-language può essere rischioso, perché l'utente medio non sa cosa sia la content negotiation, e il più delle volte non è nemmeno in grado di configurare il browser: di conseguenza rischi di redirigere automaticamente utenti non-anglofoni al sito in lingua inglese, o viceversa.
    • Il 302 è appropriato per questo tipo di redirect.
    • L'uso del 300 sulla home page è una scelta ineccepibile.
    • Mi raccomando i link e le bandierine sulla home page. 😉

  • User Attivo

    @Everfluxx said:

    • Il redirect in base all'accept-language può essere rischioso, perché l'utente medio non sa cosa sia la content negotiation, e il più delle volte non è nemmeno in grado di configurare il browser: di conseguenza rischi di redirigere automaticamente utenti non-anglofoni al sito in lingua inglese, o viceversa.
      Uhm, ma di solito, quando installo una versione di un browser localizzata, questa localizzazione non comprende anche l'accept-language?
      Un browser installato in inglese, chiede le pagine in inglese? Firefox-ita sembra comportarsi così
      (questa parte non l'ho tanto studiata, si vede? :D)

    Comunque, auto-redirect a parte, sulla welcome-page ci sono :vai:


  • Super User

    @Everfluxx said:

    • Bella l'idea di settare il cookie solo se il referer è la home page.
      Uhm... Ripensandoci meglio, forse non è proprio un'ottima idea.
      Poniamo che tu abbia un sito bilingue (caso più semplice: italiano e inglese). Io la lingua la memorizzerei in un cookie su ogni pagina del sito.
      In questo modo, se un utente anglofono arriva sul sito in italiano dai motori di ricerca e poi cambia lingua, passando al sito in inglese, il sito memorizzerà la lingua dell'ultima pagina consultata. Al suo prossimo accesso alla home page, verrà automaticamente rediretto al sito in inglese.
      Per ovviare al problema dei link da una lingua all'altra (posto che, parlando di link interni, secondo me quello di confondere i bot è un timore ingiustificato: oggigiorno i motori di ricerca sono piuttosto bravi a riconoscere automaticamente la lingua di una pagina) puoi usare un jump menu JavaScript.