it-swarm.dev

多言語のURLのリダイレクト

多言語のJoomlaサイトでURLをリダイレクトするのに苦労しています。

新しいサイトのURL構造は次のとおりです:http://sitename.com/[language]/[pagename].htmlおよび古いサイトのURL構造は次のとおりです:http://sitename.com/[pagename]?lang=[language]

私はいくつかの正規表現の呪文を試しましたが、どれもうまくいきません。 Joomlaの多言語リライトが何らかの形で上書きされているようです。

これは私が使用した正規表現の1つです。リダイレクトでも試してみました。

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

どのように配置しても機能せず、古いURLを新しいURLにリダイレクトしたいのです。

2
Reygoch

まず第一に、私は決して.htaccessの第一人者ではありませんが、うまくいくアイデアがあります。

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]

リダイレクトする言語ごとに2行を繰り返す必要がありますが、膨大な数の言語がなければ、難しくありません。

最初のルールは、URLにlang=enが存在するかどうかをチェックし、存在する場合は、パスで/en/を使用してURLを書き換えます。 ?html?は、URLパラメータを削除します。 Lパラメータは、ルールを強制的に最後のルールにし、以下のルールはすべて無視されます。

htaccess testerを使用して、これ(および他のソリューション)をテストできます。

それが役に立てば幸い、少なくとも試してみる価値はある。

1
johanpw

Mod Rewrite Generator( http://www.generateit.net/mod-rewrite/index.php )というツールを試してみてください。

これは、パラメーター(domain.com/index.php?lang=en)を含むURLを挿入し、最終的なURLでそれらをどのように使用するかを選択して、.htaccessファイル。

多くの状況で役に立ちます。

1
Bogowoe