2016-09-22 8 views
0

スタックオーバーフローの質問と回答を検索するのに最善を尽くしました。ソリューションを適用しようとしても機能しません。.htaccess index.phpからのリダイレクトが機能しません

http://www.example.com/index.php?lang=XX

で始まる、私はすべての住所がをリダイレクトする必要が

http://www.example.com/XX

これは私がしようとするものである:

RewriteCond %{HTTP_HOST} ^www.example\.com [NC] 
RewriteRule ^(index\.php\?lang\=)$ http://www.example.com/$1 [L,R=302] 

場所/インデックス.php?lang = en リダイレクト/ en(どこでも)ではありません。 同じURLにあります。

+0

これは多かれ少なかれ次のようになります。ユーザーはまだhttp://www.example.com/index.php?lang=enで終わります - これはあなたの意味ですか? –

+0

私は完全に混乱しなければなりません。私はexample.com/enで終わる必要があります – frankie

+0

はい、しかし、現在ユーザーはどこで終わっていますか? http://www.example.com/index.php?lang=ja(つまり、リダイレクトはありません)? –

答えて

1

リライトスレッドでquery_stringを照合することはできません。そのためには、特定のRewriteCondが必要です。

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] 
RewriteCond %{QUERY_STRING} ^lang=(.*) 
RewriteRule^http://www.example.com/%1 [R=302,L,QSD] 
+0

なぜ '^'と 'http://'の間にスペースがあるのでしょうか? – frankie

+0

訂正:これは、答えを更新した後で今動作しています。ありがとうございました。私はそれを正確にチェックして戻ってくるでしょう。 – frankie

+1

^は文字列の先頭を示し、何もキャプチャしていないので何も必要ありません。はい、書き換えループを回避するためにQSD(クエリ文字列破棄)を追加しました。私にそれを思い出させるための@リッチボーエンに感謝します。 –

関連する問題