2012-01-27 15 views
0

クエリ文字列を含むURLをサブドメインにリダイレクトしようとしましたが、動作させることができません。クエリ文字列を含むhtaccessリダイレクトが失敗します

目標はwww.example.com/services/json?method=views.get私は.htaccessファイルにしているold.example.com/services/json?method=views.get

になるようにすることです:Chromeの場合

RedirectMatch 301 ^www\.example\.com/services/json$ http://old.example.com/services/json$1

、それだけでWWWのドメインのまま。

のFirefoxで

、それは言って、一度失敗した「Firefoxはサーバがその完全決して方法で、このアドレスに対する要求をリダイレクトしていることを検出しました。」しかし、私はもう一度試してみてくださいヒットした場合、それだけでサブドメインに行きます良い。

これは怒っており、助けに感謝しています。私はいくつかの異なるパターンを試しました。

ありがとうございます!

また、クエリ文字列には二重引用符があります。 %2522にエンコードされていなくてもそれらを保存することは可能ですか?

+0

'$ 1'は存在してはいけません。 – Gerben

答えて

1

私はこれを考え出しました。ここに私はそれを働かせるために置いたものです:

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
RewriteRule ^services/json(.*)$ http://old.example.com/services/json$1 [NE,L,R=301] 

すべてが今完全に動作します。

ルールの最後にあるNEタグは、必要に応じて二重引用符をクエリ文字列内に保持し、それらをエンコードしません。

4

はこれを試してみてください:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
RewriteRule ^(.*)$ http://old.example.com/$1 [R=301,L] 
+0

私が必要としたことを行うためにそれを修正しました: RewriteCond%{HTTP_HOST}^www \ .example \ .com/services/json $ [NC] RewriteRule ^(。*)$ http://old.example.com/$ 1 [R = 301、L] それは動作しません。それは単にwwwドメインにとどまります。それはうまくいかないので、何にも影響しないようです。 – jazzdrive3

関連する問題