2016-12-15 107 views
0

我已将网站移至新域,并且我使用RewriteRule重定向了我的一些网址。如何使用查询字符串重定向URL

我被卡住了试图用查询字符串重定向URL吗?

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] 

进一步向上htaccess文件我用这个来重定向域

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] 

当我访问:

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

它重定向到

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

哪404s,我需要r转发到:

new-website.com/faqs/economic-impact 

任何人都可以帮忙吗?

+2

你需要它仅适用于上述这些字符串3或你想'/新闻/ archive.php?cat =任何东西'重定向到'http:// www.new-website.com/faqs/anything'? –

+0

[htaccess重定向与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] 

%1将采取反向引用从正则表达式小组赛在RewriteCond

+1

没有'/'在开始的RewriteRule htaccess uri:'重写规则新闻/档案。 php http://www.new-website.com/faqs/%1? [R = 301,L]' – Croises

+0

@Croises好点,谢谢。 – arco444