2016-12-15 9 views
0

ウェブサイトを新しいドメインに移動しましたが、RewriteRuleを使用して多数のURLをリダイレクトしました。クエリーストリングを使用してURLをリダイレクトする方法

質問文字列を含むURLをURLにリダイレクトしようとしましたが、私は詰まっていますか?

old-website.com/news/archive.php?cat=economic-impact 

それは

new-website.com/news/archive.php?cat=economic-impact 

にリダイレクトします:私は私が訪問した場合、ドメインに

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^old-website.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www.old-website.com$ 
RewriteRule (.*)$ http://www.new-website.com/$1 [R=301] 

をリダイレクトするために、これを使用していhtaccessファイルまでさらに

RewriteRule /news/archive.php?cat=economic-impact http://www.new-website.com/faqs/economic-impact [R=301,L] 
RewriteRule /news/archive.php?cat=housing-need http://www.new-website.com/faqs/housing-need R=301,L] 
RewriteRule /news/archive.php?cat=infrastructure http://www.new-website.com/faqs/infrastructure R=301,L] 

404s、私はrにする必要があります宛て先:

new-website.com/faqs/economic-impact 

誰でも手助けできますか?

+2

で正規表現グループの試合から後方参照がかかりますあなたは上記の3のみこれらの文字列のためにそれを必要とするか、またはあなたが '/ニュース/たいですarchive.php?cat = anything'は 'http:// www.new-website.com/faqs/anything'にリダイレクトされていますか? –

+0

[htaccess redirection with querystring](http://stackoverflow.com/questions/6383574/htaccess-redirection-with-querystring) – Walf

答えて

0

既存のクエリ文字列を切り捨てるには、書き換えに空のクエリ文字列を追加する必要があります。

以下は、ジョブ実行する必要があります。また

RewriteRule (.*)$ http://www.new-website.com/$1? [R=301] 

を、既存のクエリ文字列をチェックしている方法は機能しません。あなたはそれらを個別にチェックする必要があります:

RewriteCond %{QUERY_STRING} "cat=(economic-impact|housing-need|infrasructure)" 
RewriteRule news/archive.php http://www.new-website.com/faqs/%1? R=301,L] 

%1RewriteCond

+1

RewriteRuleの先頭に '/'を付けないでください。htaccess uri: 'RewriteRule news/archive。 php http://www.new-website.com/faqs/%1? [R = 301、L] ' – Croises

+0

@Croises良い点、ありがとうございます。 – arco444

関連する問題