- Home
- Categorie
- La Community Connect.gt
- Tutto sulla Community
- Rewrite di un sito Multilingua e default
-
Rewrite di un sito Multilingua e default
Salve a tutti!
Ho sviluppato un sito multilingua in php, dopodiché ho creato il file .htaccess per riscrivere gli url in modo che fossero più friendly ai motori di ricerca e soprattutto in modo che gli url fossero riscritti nella lingua dell'utente.Questo è il mio .htaccess. /mt2/ è la cartella sul server in locale, sul remoto la rewrite base sarà "/" e le cond modificate di conseguenza.
Options +FollowSymlinks RewriteEngine On RewriteBase /mt2/ RewriteRule ^admin[/]?$ admin/login.php [L,NC] RewriteRule ^collaboratori[/]?$ collaboratori.php [L,NC] RewriteCond %{REQUEST_URI} !^/mt2/it/ RewriteRule (.*) - [S=10] RewriteRule ^it/$ ?lang=it RewriteRule ^it/contatti-e-sedi[/]?$ contatti.php?lang=it [L,NC,QSA] RewriteRule ^it/(.*)cerca[/]?$ cerca.php?lang=it [L,NC,QSA] RewriteRule ^it/macchine-utensili-usate[/]?$ usato.php?lang=it [L,NC,QSA] RewriteRule ^it/macchine-utensili-nuove[/]?$ nuovo.php?lang=it [L,NC,QSA] RewriteRule ^it/accessori-macchine-utensili[/]?$ accessori.php?lang=it [L,NC,QSA] RewriteRule ^it/(macchine-utensili-usate|macchine-utensili-nuove|accessori-macchine-utensili)?[/]?([a-zA-Z-]+)$ categoria.php?categoria=$1&cat=$2&lang=it [L,NC] RewriteRule ^it/(macchine-utensili-usate|macchine-utensili-nuove|accessori-macchine-utensili)/([0-9]+)/([^/]+)-w00\.htm$ scheda_articolo.php?id=$2&web=1&lang=it [L,NC] RewriteRule ^it/(macchine-utensili-usate|macchine-utensili-nuove|accessori-macchine-utensili)/([0-9]+)/([^/]+)\.htm$ scheda_articolo.php?id=$2&web=0&lang=it [L,NC] RewriteRule ^it/(macchine-utensili-usate|macchine-utensili-nuove|accessori-macchine-utensili)/([0-9]+)/richiesta-informazioni\.php$ richiesta-informazioni.php?id=$2&lang=it [QSA,L,NC] RewriteCond %{REQUEST_URI} !^/mt2/en/ RewriteRule (.*) - [S=10] RewriteRule ^en/$ ?lang=en [L,NC] RewriteRule ^en/contacts-and-offices[/]?$ contatti.php?lang=en [L,NC,QSA] RewriteRule ^en/(.*)search[/]?$ cerca.php?lang=en [L,NC,QSA] RewriteRule ^en/used-machine-tools[/]?$ usato.php?lang=en [L,NC,QSA] RewriteRule ^en/new-machine-tools[/]?$ nuovo.php?lang=en [L,NC,QSA] RewriteRule ^en/machine-tools-accessories[/]?$ accessori.php?lang=en [L,NC,QSA] RewriteRule ^en/(used-machine-tools|new-machine-tools|machine-tools-accessories)?[/]?([a-zA-Z-]+)$ categoria.php?categoria=$1&cat=$2&lang=en [L,NC] RewriteRule ^en/(used-machine-tools|new-machine-tools|machine-tools-accessories)/([0-9]+)/([^/]+)-w00\.htm$ scheda_articolo.php?id=$2&web=1&lang=en [L,NC] RewriteRule ^en/(used-machine-tools|new-machine-tools|machine-tools-accessories)/([0-9]+)/([^/]+)\.htm$ scheda_articolo.php?id=$2&web=0&lang=en [L,NC] RewriteRule ^en/(used-machine-tools|new-machine-tools|machine-tools-accessories)/([0-9]+)/richiesta-informazioni\.php$ richiesta-informazioni.php?id=$2&lang=en [QSA,L,NC] RewriteRule ^(.+)/files/(.+)$ files/$2 [L,NC] RewriteRule ^(.+)/style/(.+)$ style/$2 [L,NC] RewriteRule ^(.+)/lightbox/(.+)$ lightbox/$2 [L,NC] RewriteRule ^(.+)/js/(.+) js/$2 [L,NC]
Il file è molto lungo (se avete idee per semplificare sono ben accette), ma funziona benone...
Ora però ho bisogno di fare in modo che l'italiano sia il default, ovvero di un redirect (visibile) da www . sito . it a www . sito .it/it/ .
Se poi il redirect valesse anche per le pagine interne sarei ancora più felice...Praticamente ne ho provate di tutti i colori da stamattina, ma ottengo sempre un loop tra l'inserimento della directory fittizia (it,en,ecc) e il redirect al file reale.
Per fare un esempio ecco una delle ultime prove:
ho inserito nel .htaccess (prima all'inizio, poi alla fine, non è cambiato nulla)RewriteCond %{REQUEST_URI} !^/mt2/(it|en)/ RewriteRule (.*) it/$1 [R=301]
richiedo al browser -> localhost / mt2 /
ottengo un redirect 301 a -> localhost /mt2 / it
che fa un redirect 301 a -> localhost / mt2 / it /?lang=it
che fa un redirect 301 a se stesso e quindi procede all'infinito finché apache non intervieneChe un qualche santo mi aiuti!
Grazie!!