web-dev-qa-db-ja.com

単一のURLを別のドメインの同じURLにリダイレクトする

表示されたリンクを取得し、以下のように宛先リンクにルーティングするように.htaccessファイルを設定しようとしています

表示されたリンクhttp://www.my-website.com/click-4559226-10388358?url=https%3A%2F%2Fdestination-website2.com%2FItem.php%3Fid%3D44350396%26sld%3DA6D7A632-821E-4b78-ACD0-147658B77BD6

宛先リンクhttp://www.destination-website.com/click-4559226-10388358?url=https%3A%2F%2Fdestination-website2.com%2FItem.php%3Fid%3D44350396%26sld%3DA6D7A632-821E-4b78-ACD0-147658B77BD6

事実上、変更されるのは最初のURL(http://www.my-website.com)だけで、その後はすべて同じです。

これは可能ですか?誰かが私がそれについてどうやって行くか簡単に説明できますか?

*明確にするために、my-website.comからすべてをリダイレクトしたくありません。 http://www.my-website.com/click-4559226-10388358で始まるリンクのみ

1
thatguy

.htaccessファイルでこれを試してください:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_Host} ^www.olddomain.com$[OR]
RewriteCond %{HTTP_Host} ^olddomain.com$
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]

クエリ文字列を保持していない場合は、上記のコードの最後の行を

RewriteRule / http://www.newdomain.com/?%{QUERY_STRING} [R=301,L]

編集:

ルールをwww.my-website.com/click-4559226-10388358のみに制限する場合は、上記のコードの最後の行を次のように変更してください。

    RewriteRule ^click\-([0-9]+)\-([0-9]+)$ http://www.newdomain.com/click-$1-$2?%{QUERY_STRING} [R=301,L]
1
Emmanuel

http://www.my-website.com/click-4559226-10388358で始まるリンクのみ

URLパスが(正確に)/click-4559226-10388358であるリンクのみを別のドメインの同じ URLにリダイレクトし、クエリ文字列を維持しながら、次のようなことを行うことができます。ドキュメントルートの.htaccessファイル。

これはmod_rewriteを使用し、他のディレクティブがある場合はファイルの先頭近くに来るはずです。

RewriteEngine On
RewriteCond %{HTTP_Host} ^(www\.)?my-website\.com$ [NC]
RewriteRule ^click-4559226-10388358$ http://www.destination-website.com/$0 [R=302,L]

ソースドメインと宛先ドメインが異なるサーバーにある場合は、RewriteCondディレクティブを省略できます。

302(一時的)リダイレクトを301(永続的)に変更します(正常に機能していることが確認できたら)。永続的なリダイレクトはブラウザによってキャッシュされるため、テスト時に問題を引き起こす可能性があります。

1
MrWhite

変更されているのがクエリ文字列だけである場合、mod_rewriteなしでこれを行うことができるはずです。単純なRedirectディレクティブを使用する方が効率的であり、多くの場合、RedirectRuleと一致する正規表現よりもはるかに高速です。これは、サイトのルートにある.htaccessファイル内のRedirectステートメントです。

Redirect /click-4559226-10388358 http://www.destination-website.com/click-4559226-10388358

W3dが指摘したように、永続的なリダイレクトに変更する前にテストする必要があります。

Redirect 301 /click-4559226-10388358 http://www.destination-website.com/click-4559226-10388358

RedirectおよびRedirectMatchは、クエリ文字列を変更せずにターゲットURLに渡します。

1
Stephan

Www.my-website.comで:

Redirect permanent / http://www.destination-wabsite.com/
0
ChrisJ

サーバーでmod_rewriteが有効になっていると仮定すると、次のようなものを配置できます。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_Host} ^www\.my-website\.com$ [NC]
RewriteRule ^(.*)$ http://www.destination-website.com/$1 [QSA,L]
</IfModule>

これにより、www.my-website.comへのリクエストがwww.destination-website.comにリダイレクトされます。 [NC]は大文字と小文字を区別しないモードで動作するようにApacheに指示し、[QSA、L]はクエリ文字列パラメーターを維持するように指示し、他の規則に従わないように指示します。詳細は ApacheのWebサイト で見つけることができます。

0
sgb