2013-10-03 29 views
1

我想用查询字符串设置重定向到新的主机。我正在努力将查询添加到目标网址的末尾。这是我的例子旧的URL.htaccess用HTTP_HOST和QUERY_STRING重写

http://sub.oldexample.com/folder1/page1?value=ABC123

我想它去

http://newexample.com/folder3/page6?value=ABC123

我没有问题时,不涉及到query,例如下面的代码工作完美但不适合

RewriteCond %{HTTP_HOST} ^sub.oldexample.com$ 
RewriteRule ^folder1/([A-Za-z][A-Za-z][A-Za-z][0-9][0-9][0-9])$ http://newexample.com/folder3/$1 [L,R=301,NC] 

我试图包括一个query的条件,但它无法

RewriteCond %{HTTP_HOST} ^sub.oldexample.com$ [NC] 
RewriteCond %{QUERY_STRING} ^(value=ABC123) 
RewriteRule ^$ http://newexample.com/folder3/page6?%1 [L,R=301,NC] 

我发现下面的链接一个完美的环境,因为它使所产生

http://htaccess.madewithlove.be/

+0

你尝试过'(。* 0)''ABS123' insteasd吗? – 2013-10-03 17:53:59

回答

1

下面的规则应该为你工作输出URL测试.htaccess规则:

RewriteCond %{HTTP_HOST} ^sub\.oldexample\.com$ [NC] 
RewriteCond %{QUERY_STRING} (^|&)value=ABC123(&|$) [NC] 
RewriteRule ^folder1/page1/?$ http://newexample.com/folder3/page6 [L,R=301,NC] 

您不需要复制QUERY_STRING,因为它会自动c结束了新的URL。

+0

谢谢,它重定向但doeas不添加查询到最后?输出是'http:// newexample.com/folder3/page6',可以在这里检查http://htaccess.madewithlove.be/ – StevenPHP

+0

该网站实际上不太可靠,用于测试.htaccess。在您的服务器上尝试一下,然后使用其他浏览器进行测试。 – anubhava

+0

还要记住保留这条规则,使其位于'RewriteEngine On'行下面的所有其他规则之上。 – anubhava

0

试试这个:

RewriteCond %{HTTP_HOST} ^sub.oldexample.com$ [NC] 
RewriteCond %{QUERY_STRING} (.+)=(.+) 
RewriteRule ^/?folder1/page1$ http://newexample.com/folder3/page6 [QSA,R=301] 

只是尝试使用[QSA]标志。