Gen 16 2006
Siti multilingua con mod_rewrite e parte sistemistica (2° parte)
Ciao a tutti,
a seguito dell’articolo http://www.massimo-caselli.com/2006/01/08/mod_rewrite-apache-sviluppo-siti-internet/ cerchiamo di trovare una buona soluzione per non diventare matti nella realizzazione di un sito web multilingua e che sia ottimizzato per una buona indicizzazione su Google.
Facciamo finta per comodità che le lingue siano due o tre. L’errore più comune è quello di buttare in sessione la lingua e con la stessa pagina avere un output in italiano, inglese, russo o quello che volete.
Quello che accade è che di fatto ci verranno indicizzate da Google (dico Google ma intendo i motori di ricerca in generale) solo le pagine in inglese.
Come fare quindi?
HOME PAGE IN CHE LINGUA?
Il primo dubbio che puà venire, ma la home page in che lingua deve essere?
Secondo me deve essere visualizzata all’utente (così come al bot di Google) nella lingua del browser (o se non riconosciuta nella lingua di default, l’inglese).
In questo modo siamo sicuri che Google prenderà la pagina index in lingua inglese (maggioranza di visitatori di solito…)
Se qualcuno avesse altre idee, suggerimenti etc… come sempre, sono ben accetti.
CAMBIO DELLA LINGUA, HOME PAGE “DI LINGUA”
Una volta che l’utente ha avuto accesso navigherà il sito nella lingua del suo browser, come fare cià?
Tutto quanto il sito deve essere così: http://www.miosito.com/$lang/
Chiaramente quella che io chiamo $lang deve essere presa come variabile tramite mod_rewrite e utilizzata, dopo adeguato parsing, per settare o risettare la lingua.
Mi spiego meglio, entro nel sito www.miosito.com e la home page mi viene mostrata in italiano, quando clicco su servizi devo ottenere nell’url qualcosa tipo:
http://www.miosito.com/it/servizi/
Come gestisco il tutto? Con una semplicissima rule di Rewrite:
RewriteEngine On
RewriteRule ^([^/]+)/servizi/ service.php?lang=$1 [L]
In questo modo $_GET[’lang’] avrà valore “it” e potrà essere parsata da php e assegnato l’italiano alla sessione di lingua.
Di conseguenza anche tutte le home page potranno essere del tipo:
http://www.miosito.com/it/index/
Il cambio di lingua puà avvenire facilmente con classiche bandierine, link, quello che vi pare a voi o al vostro grafico di turno e saranno dei semplici link a:
http://www.miosito.com/en/index/
Da quel momento l’utente naviga in inglese.
VANTAGGI CON GOOGLE DATI DA QUESTA IMPLEMENTAZIONE
Anche se puà essere e sembrare banale i vantaggi dati da una soluzione tecnica del genere nei siti multilingua sono immensi perchè:
- Google indicizzerà ogni pagina per le X lingue
- Google non si perde in cambi di lingua strani etc…
- Avremo una home page indicizzata per lingua
- Non ne ricordo altri ma sicuramente ci sono…
MOD_REWRITE DAL PUNTO DI VISTA SISTEMISTICO
Innanzitutto sfatiamo un piccolo mito secondo cui mod_rewrite sarebbe pesante… l’esecuzione di semplici regular expression non sono di certo per i server attuali e in rapporto alla complessità di molti siti non sono nulla.
Personalmente non ho rilevato su siti mediamente trafficati alcun tipo di rallentamento/appesantimento sulla macchina o sul sito web stesso.
Utilizzare mod_rewrite con .htaccess
L’utilizzo di mod_rewrite avviene normalmente tramite l’inserimento delle rule da file .htaccess che viene poi caricato sul server web.
Va fatto presente che tale soluzione non è eccezionale dal punto di vista della sicurezza perchè seppur i file .htaccess di default non vengano visualizzati da apache sono pur sempre file contenenti direttive di configurazione.
Tale soluzione è inevitabile su server di hoster come Aruba o Serverplan etc… condivisi da centinaia di siti web di clienti che devono poter lavorare in autonomia senza disturbare il servizio di supporto dei provider.
Anche perchè offrire spazio web a costi come quelli dei sopra citati provider implica inevitabilmente e giustamente un servizio di supporto che deve essere limitato allo stretto necessario.
Utilizzare mod_rewrite via VH di apache
Una soluzione decisamente più comoda e sicura ma che richiede la possibilità di accedere all’amministrazione del server o, almeno di avere un sistemista (magari con il cappellino…
) che possa andare a inserire le vostre rule.
Solitamente e personalmente, sul server di sviluppo e di staging uso comodamente .htaccess mentre in produzione vado a manina in SSH e aggiungo le regoline che mi servono.
Personalmente metto le regole all’interno del VH di apache dentro il tag specifica. Se qualcuno ha suggerimenti non taccia…
Saluti a tutti,
Maxgrante
info[AT]massimo-caselli[DOT]com
Ciao,
ho trovato i tuoi articoli utili e simpatici soprattutto quello sul server morto per il 31 Dicembre :)!
Saluti!
Grazie mille.
Ciao. Max
[…] http://www.massimo-caselli.com/2006/01/16/apache-mod_rewrite-siti-multilingua/ […]