• User

    Sito multilingue PHP e SEO

    Buongiorno a tutti, spero di non fare una domanda già posta in altri topic, dalle mie ricerche non sono riuscito a trovare nulla di simile.

    Sviluppo siti in PHP da un po di anni, e sempre più spesso mi viene richiesto che il sito sia multilingue.
    La tecnica che uso per esaudire queste richieste è molto semplice; inserisco una variabile nell'url in modo tale che vengano caricati di volta in volta i file lingua corretti, faccio un esempio: w w w. m i o s i t o.it/index.php?lang=it --> vengono caricati i file per la lingua italiana mentre w w w.miosito.it/index.php?lang=en carica i file per la lingua inglese.
    Fino a qui niente di nuovo, tecnica trita e ritrita immagino. Il problema però è che in questi ultimi periodi leggo sempre più in giro che questo tipo di url in realtà non sono molto congeniali a google per quanto riguarda l'indicizzazione del sito, e che sicuramente sarebbe molto meglio se il sito avesse la localizzazione delle lingue in cartelle diverse; quindi la versione italiana in w w w.miosito.it/it/index.php e la parte inglese in w w w.miosito.it/en/index.php.

    Chiaramente per me questa cosa è problematica in quanto apparentemente questa tecnica comporterebbe copie dello stesso sito in cartelle diverse cosa che ogni buon programmatore PHP sa che deve evitare.
    A questo punto ho cominciato a risolvere la questione utilizzando le tecniche di url rewrite, andando a trasformare l'indirizzo: w w w.miosito.it/index.php?lang=it in uno più consono del tipo w w w.miosito.it/it/index.php

    La mia domanda a questo punto è: ma sto seguendo la tecnica giusta? ne esistono altre per facilitarmi il lavoro?

    Spero vogliate darmi qualche suggerimento.

    Grazie.


  • Moderatore

    Ciao,
    sì, stai seguendo la tecnica giusta.

    Ovviamente ne esistono altre e ognuno potrebbe inventarsene di proprie, ma quella che stai eseguendo tu è quella comunemente utilizzata.


  • User

    Ti ringrazio per la risposta, sei stato davvero gentile.
    Visto che hai parlato di altre tecniche me ne sapresti suggerire qualcun'altra? L'argomento mi incuriosisce molto.


  • Moderatore

    La tecnica è corretta.

    Per renderla più se friendly e farla apparire da sito/index=?en a sito/en/ puoi impostare delle regole di mod rewrite 😉


  • User

    @Ivan88 said:

    La tecnica è corretta.

    Per renderla più se friendly e farla apparire da sito/index=?en a sito/en/ puoi impostare delle regole di mod rewrite 😉

    E' esattamente quello che faccio ora, mi interesserebbe sapere se esistono altre tecniche o se questa è l'unica strada percorribile per ottenere lo stesso risultato.


  • Moderatore

    Beh, ad esempio c'è chi non differenzia /it con /en e mette tutto nella root. Questa però è una soluzione non indicata per l'indicizzazione in quanto i motori di ricerca non avrebbero modo di distinguere il sito italiano da quello inglese.

    Oppure c'è chi usa il nome file invece della directory. Qualcosa tipo index-it.php e index-en.php per intenderci.

    La migliore però resta quella che stai applicando tu.


  • User

    Grazie ancora per le risposte.


  • User

    Ciao, mi unisco al coro 🙂
    La tecnica che usi e' giusta, basta stabilire un po di regole sul file .htaccess (utenti linux) e il gioco e' fatto... Considera che il file htaccess porta via del tempo nel caricamento della pagina, per cui potresti crearti una funzione PHP che fa il rewrite dei link già presenti sul sito in modo da togliere parte del lavoro all'htaccess.

    Mi raccomando poi di non scordarti di fare il redirect 301 dalle vecchie pagine php già indicizzate su google verso le nuove generate dal rewrite!

    Ciao 🙂


  • User

    Ciao, da quello che ho appreso io a Google importa che i tuoi URL abbiano una forma "user friendly", ovvero "human friendly", quindi più sono "leggibili" e comprensibili anche da un non addetto ai lavori, più google li apprezza.
    In un ipotesi come al tua penso utilizzerei il file .htaccess impostando un mod_rewrite fatto più o meno come segue:

    
    Options -Multiviews
    #Riscrivo gli URL per le lingue
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule (.*)/index.php?$ index.php?lan=$1
    </ifModule>
    
    

    Non l'ho testato, ma penso sia corretto già cosi. 🙂

    In questo modo puoi puntare tutti i tuoi link a "it/index.php" per la parte italiana, e a "en/index.php" per quella inglese.