Domain1.comなどの基本的なドメインがあります。また、アドオンドメインであるdomain2.comがあり、domain2.comをdomain.com?parameter=valueにリダイレクトします。これは、基本的にはdomain1.comですが、別のテンプレートを使用しますが、そのpath URLは同じままです、domain2.com、domain1.comではありません。 .htaccessファイルはアドオンドメインディレクトリ(public_html/domain2.com)内に作成され、次の2行があります。
RewriteCond % ^domain2.com
RewriteRule ^(.*) http://domain1.com?parameter=value [P]
書き換えは機能しますが、ブラウザのURLはdomain1.comに変更されます。
編集:Uは.htaccessにこのコードを持っていますが、URLはdomain1.comに変更され、代わりにdomain2.comにとどまります。
RewriteCond %{HTTP_Host} ^domain2\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.domain2\.com$
RewriteRule ^/?$ "http\:\/\/domain1\.com\/\?parameter\=value" [R=301,L]
誤解しない限り、これはshould探しているものに沿ったものです。
RewriteEngine On
Options +FollowSyminks
RewriteCond %{HTTP_Host} ^mydomain\.com$ [NC,OR]
RewriteCond %{HTTP_Host} ^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://my-new-domain.com/$1 [NC,L]
URLを同じにしたい場合は、ブラウザーをリダイレクトに2コードでプッシュするため、R=302
フラグは不要です。基本的に、あなたがしたいことは、適切な場所へのURLをmaskだけにすることです。
(私の思考の流れを蹴ったものを提供してくれた@closetnocへのクレジット)
これを試して:
RewriteCond %{HTTP_Host} ^mydomain\.com$ [NC,OR]
RewriteCond %{HTTP_Host} ^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://my-new-domain.com/$1 [R=301,L]
あなたの質問からあなたのRewriteRuleは根本的に間違っています:
RewriteRule ^/?$ "http\:\/\/domain1\.com\/\?parameter\=value" [R=301,L]
私の例は、古いドメインから要求とパラメーターを取得して新しいドメインに転送する一般的なブランケットリダイレクトです。
あなたの場合、http\:\/\/domain1\.com\/\?parameter\=value
はエスケープ(バックスラッシュを使用)または引用符で囲む必要はありません。私の例の^(.*)$ http://my-new-domain.com/$1
は、(.*)
から値を取得します。これは、ディレクトリパス、ファイル、および任意のパラメーターで構成されるURIであり、新しいドメインを使用して新しい要求の最後に配置します$1
。
したがって、www.old-domain.com/eagle-brand/products.php?type=food
に対する要求はwww.new-domain.com/eagle-brand/products.php?type=food
になります。