ti-enxame.com

Redirecionando URL multilíngue

Estou tendo dificuldade para redirecionar URLs no site multilíngue do Joomla.

O novo site tem a seguinte estrutura de URL: http://sitename.com/[language]/[pagename].html e a estrutura antiga do URL do site é a seguinte: http://sitename.com/[pagename]?lang=[language].

Eu tentei vários encantamentos regex, mas nenhum deles funciona. Parece que as reescritas multilíngues do Joomla as estão substituindo de alguma forma.

Aqui está uma das expressões regulares que usei, tentei também o redirecionamento:

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

Ele simplesmente não funciona, não importa como eu o coloque e quero redirecionar URLs antigos para novos.

2
Reygoch

Primeiro de tudo, eu não sou um guru do .htaccess, mas aqui está uma idéia que pode funcionar:

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]

Você precisará repetir as duas linhas para cada idioma que deseja redirecionar, mas não deve ser difícil, a menos que você tenha uma quantidade louca de idiomas.

A primeira regra verifica se lang=en está presente no URL e, se estiver, o URL é reescrito usando /en/ no caminho. O ? em html? remove qualquer parâmetro de URL. O parâmetro L força a regra a ser a última e qualquer regra abaixo é ignorada.

Você pode testar isso (e outras soluções) usando o testador de htaccess.

Espero que ajude, pelo menos vale a pena tentar.

1
johanpw

Você pode tentar uma ferramenta chamada Mod Rewrite Generator ( http://www.generateit.net/mod-rewrite/index.php ).

É uma ferramenta que permite inserir qualquer URL com parâmetros (domain.com/index.php?lang=en), escolher como você deseja usá-los no URL final e fornecer o código para o seu .htaccess Arquivo.

Acho útil em muitas situações.

1
Bogowoe