2017-05-09 14 views
1

ウェブサイトの再設計のコンテキストでは、langパラメータの静的URLを別のドメインの静的URLに.htaccessを使用してリダイレクトしたいと思います。 URLは次のように構築されています:私はすでに ....... RedirectMatch 301のような単純なリダイレクトを試してみましたが、またRewriteCondRewriteRuleとよりCOMPLEXEのURL301の静的変数のURLを別のドメインにリダイレクト

www.example.com/first-page/?lang=it >> www.example.it/prima-pagina/ 
www.example.com/first-page/?lang=fr >> www.example.fr/premiere-page/ 

www.example.com/another-page/?lang=it >> www.example.it/unaltra-pagina/ 
www.example.com/another-page/?lang=fr >> www.example.fr/autre-page/ 

www.example.com/folder/last-page/?lang=it >> www.example.it/record/ultima-pagina/ 
www.example.com/folder/last-page/?lang=fr >> www.mydomain.fr/dossier/derniere-page/ 

、両方失敗した...

答えて

0

必要になりますmod_rewrite(RewriteCond/RewriteRule)を使用してURLの照会文字列部分を照合する必要があります。

ソースURLとターゲットURLのURLパスの間に相関関係はなく、言語ごとに異なるように見えるので、それぞれ.htaccessで個別に行う必要があります。例えば

www.example.com/first-page/?lang=it >> www.example.it/prima-pagina/ 
www.example.com/first-page/?lang=fr >> www.example.fr/premiere-page/ 

以下カバーだけ最初の二つのリダイレクト。

RewriteEngine On 

RewriteCond %{QUERY_STRING} ^lang=(it) 
RewriteRule ^first-page/$ http://www.example.%1/prima-pagina/? [R,L] 

RewriteCond %{QUERY_STRING} ^lang=(fr) 
RewriteRule ^first-page/$ http://www.example.%1/premiere-page/? [R,L] 

括弧のサブパターン(例えば(fr))が捕捉基であり、フォーム%1の後方参照をRewriteRule置換にコンテンツ(例えばfr)を参照することを可能にします。カッコを使用しない場合は、これを行うことはできません。

の末尾にある?の置換は、要求からクエリ文字列を削除します。これらは永久的なリダイレクトが続いていますが、それはOK取り組んでいるを確認しただけで後は、RR=301にを変更することを意図している場合

UPDATE: URLのparam値がドメインTLDと一致しない場合は、明示的に名前を付ける必要があります。例:

RewriteCond %{QUERY_STRING} ^lang=aa 
RewriteRule ^first-page/$ http://www.example.bb/prima-pagina/? [R,L] 
+0

こんにちは。お返事をありがとうございます。それはうまくいきません。何も起こりません。私はlangu paramの周りにwithと "with"( "and") "サブフォルダ"の有無にかかわらず試しました。私は "%1"を削除してdomaine extで置き換えようとしました。 - プラス:langパラメータがドメイン拡張と等しくない場合はどうすればよいですか? – Romain

+0

'.htaccess'ファイルに他の指示がありますか?他の '.htaccess'ファイル? mod_rewriteはインストールされていますか? '.htaccess'ファイルは許可されていますか? lang paramとdomain extの違いについて私の答えを更新しました - この場合、両方を指定するだけです(ショートカットなし)。また、正規表現( '('、 ')'と '%1')を説明するもう少し情報を追加しました。 – MrWhite

+0

もう一度。はい、Worpressに使用されている '.htaccess'ファイルにはすでに指令があります。あなたの書き換えルールを ''ゾーンに入れようとしましたが、成功しませんでした。しかし、ホームページが動作しているようです: 'RewriteCond%{QUERY_STRING}^lang = en RewriteRule^http://www.domain.com /? [R = 301、L] 'ではなく、内部ページではありません。 – Romain

関連する問題