2012-03-29 14 views
0

私のウェブサイトを更新しました。以前は、次のようなリンクがありました:http://example.com/bla-bla-bla?language=de。アップデート後は、これらのリンクはhttp://de.example.com/bla-bla-blaApache:htaccess redirect

に301リダイレクトする必要があります私はこれを試してみましたが、それはうまくいきませんでした。助けを

RewriteRule ^(.*)language=(fr|de|it|es|pt) http://$2.example.com/$1 [R=301,NC]

感謝を。

答えて

0

GetパラメータはRewriteRuleコマンドでは抽出できません。それらは%{QUERY_STRING}変数に含まれています。 RewriteCondを使用して特定の値を抽出することができます。その後、「%」プレフィックス 例

RewriteCond %{QUERY_STRING} ^language=(fr|de|it|es|pt)$ [NC] 
RewriteRule ^(.*) http://%1.example.com/$1 [R=301,NC,L] 

と我々は、ルールを書き換えを停止するLフラグを追加しました。

誰かが言語パラメータなしで古いページにアクセスする場合のデフォルト値を設定することをお勧めします。

RewriteCond %{QUERY_STRING} ^$ [NC] 
RewriteRule ^(.*) http://fr.example.com/$1 [R=301,NC,L] 

私はフランス人だから、私は私がhttp://example.com/language=frを入力した場合にのみそれは動作します)=

よろしく

+0

をFRを使用。これはhttp://example.com/test.php?language=frのようなものを入力すると絶対に動作しません(http://fr.example.com/test.phpにリダイレクトします) – user1267570

+0

書き換えルールはあなたにそれを与えるように見える?どのようにrewrited example.com/test.php?language=fr? – grifos

+0

私の間違いでした。それは実際に働いた。サイトのエントリポイントに存在しないURLのリダイレクトがあり、あなたの前に実行されました。 – user1267570