2009-08-28 19 views
2

を助ける...新しいドメインに書き直しますか? URLクエリで?働いていない。 :(私は、この書き換えルールを持っている

world.example.comからweb.example.com

素晴らしい作品
RewriteCond %{HTTP_HOST} ^world\.example\.com$ [NC] 
RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{SERVER_PORT} !^80$ 
RewriteRule ^(.*)$ https://web.example.com$1 [R=301,L] 

へのすべての最初の要求をリダイレクトします。しかし、私のアプリケーションのいくつか残念ながら、それはweb.example.comに適切にリダイレクトされていません...

https://world.example.com/approvals/?id=b47b5256567 

が持っている。その代わりに、それだけで、クエリのparamsなしweb.example.comに行く。

クエリのパラメータとともにweb.example.comにすべてのリクエストを適切にリダイレクトできるようにするにはどうすればよいですか?

基本的には、それが何をすべきか...

https://world.example.com/approvals/?id=b47b5256567 
then 
https://web.example.com/approvals/?id=b47b5256567 

ちょうどウェブに世界を変えて、クエリ文字列を渡します。

答えて

5

これを行うには、複雑な書き換えエンジンを使用する必要はありません。ただ、Redirectを使用します。

<VirtualHost *> 
    ServerName world.example.com 
    Redirect permanent/https://web.example.com/ 
</VirtualHost> 

Redirectディレクティブは、自動的にリダイレクトしているものの後に来るすべてのものを保持します。

+0

いいですね。ホールドオン、試してみましょう。 RewriteEngineもオフにする必要がありますか? –

+0

RewriteEngineはRedirectディレクティブで使用されていないため、問題はありません。 –

+0

出来た!しかし、httpでのみ。 https://world.example.comリンクが使用されている場合は、クエリhttps://web.example.comを使わずにメインページにリダイレクトされます。 これは私だけかもしれませんが、world.example.com(自己署名入りの証明書)であるかどうかは不明ですが、問題が原因であるかどうかは不明です。 しかし全体的には、このソリューションは簡単に適合します。そしてありがとう。 –

1

ヘルプあなたは「クエリ文字列追加」フラグ[R=301,L,QSA]を使うのを忘れていました。

+0

うん、でも書き換えは少し複雑です。 –

+0

まあ、私はそうは思わない。しかし、Greg Hewgillの提案は、あなたがサーバの設定ファイルにアクセスできると仮定すれば、はるかに専門的です。 – Havenard

0

Nginxでもやります。

server { 
    listen 80: 
    server_name: world.example.com  

    # URL redirect 
    #rewrite^http://web.example.com$request_uri? permanent; 
    rewrite^$scheme://web.example.com$request_uri permanent; 
    #rewrite^$scheme://web.example.com permanent; 
    #rewrite^$scheme://web.example.com; 
} 

参考:

関連する問題