![]() |
![]() |
|
| Condividi questo contenuto nei Social Network: |
|
Tweet |
|
|
|
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito. |
||||
|
|||||||||
Hey Amico Visitatore, Condividi con noi le tue idee e la tua conoscenza Aprendo una nuova discussione nella sezione Mod Rewrite e Tecniche di URL Redirect |
|
|
LinkBack | Strumenti di discussione |
|
|
#1 (permalink) |
|
Moderatore
|
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. Codice:
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 [NC]
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]
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) Codice:
RewriteCond %{REQUEST_URI} !^/mt2/(it|en)/
RewriteRule (.*) it/$1 [R=301]
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 interviene Che un qualche santo mi aiuti! ![]() Grazie!! ![]() |
|
|
|
|
|
| Tags: htaccess, multilingua, rewrite |
| Strumenti di discussione | |
|
|