it-swarm-eu.dev

Reindirizzamento dell'URL multilingue

Sto facendo fatica a reindirizzare gli URL sul sito Joomla multilingue.

Il nuovo sito ha la seguente struttura URL: http://sitename.com/[language]/[pagename].html e la vecchia struttura dell'URL del sito è la seguente: http://sitename.com/[pagename]?lang=[language].

Ho provato diversi incantesimi regex ma nessuno di loro funziona. Sembra che le riscritture multilingue di Joomla le stiano sovrascrivendo in qualche modo.

Ecco uno dei regex che ho usato, ho provato anche con il reindirizzamento:

RewriteRule /(.+)\?lang=(.+) /$2/$1.html [L,R=301]

Non funziona, non importa come lo metto e voglio reindirizzare i vecchi URL a quelli nuovi.

2
Reygoch

Prima di tutto, non sono affatto un guru .htaccess, ma ecco un'idea che potrebbe funzionare:

RewriteCond %{QUERY_STRING} .*lang=en.*
RewriteRule ^(.*)$ /en/$1.html? [R=301,L]

RewriteCond %{QUERY_STRING} .*lang=es.*
RewriteRule ^(.*)$ /es/$1.html? [R=301,L]

RewriteCond %{QUERY_STRING} .*lang=no.*
RewriteRule ^(.*)$ /no/$1.html? [R=301,L]

Dovrai ripetere le due righe per ogni lingua che desideri reindirizzare, ma non dovrebbe essere difficile a meno che tu non abbia una quantità folle di lingue.

La prima regola controlla se lang=en è presente nell'URL e, in caso affermativo, l'URL viene riscritto usando /en/ nel percorso. Il ? nel html? rimuove qualsiasi parametro URL. Il parametro L impone che la regola sia l'ultima e qualsiasi regola di seguito viene ignorata.

Puoi testare questo (e altre soluzioni) usando htaccess tester.

Spero che sia d'aiuto, almeno vale la pena provare.

1
johanpw

Potresti provare uno strumento chiamato Mod Rewrite Generator ( http://www.generateit.net/mod-rewrite/index.php ).

È uno strumento che ti consente di inserire qualsiasi URL con parametri (domain.com/index.php?lang=en), quindi scegliere come utilizzarli nell'URL finale e quindi fornirti il ​​codice per il tuo .htaccess file.

Lo trovo utile in molte situazioni.

1
Bogowoe