2013-08-30 33 views
1

我对尝试在htaccess中重定向但拥有大约20个网址的列表完全陌生,全部使用查询字符串,并且全部使用不同的URL。htaccess多个查询字符串重定向到不同的网址

我设法得到一个重定向使用查询字符串工作使用RewriteCond和RewriteRule,但是当我以相同的格式添加其他网址他们似乎都重定向到第一个RewriteRule中的网址。

它变得非常沮丧,因为我到处搜索并尝试了很多方法来尝试并使其工作。希望这里有人能帮助我!

这里有几个URL的我需要重定向:

/store/index.php?search=flip拖鞋>>http://www.stonemenswear.co.uk/menswear/flip-flops

/store/index.php?search=Boss+Orange +短裤>>http://www.stonemenswear.co.uk/menswear/shorts

这里是到目前为止,我已经得到了代码:

RewriteEngine on 
RewriteCond "%{QUERY_STRING} search=flip flops" 
RewriteRule ^index\.php$ http://www.stonemenswear.co.uk/menswear/flip-flops/? [R=301,N] 

RewriteCond %{QUERY_STRING} search=Boss+Orange+Shorts 
RewriteRule ^index\.php$ http://www.stonemenswear.co.uk/menswear/shorts? [R=301,N] 

(加上重写相同的格式的其余部分)

其中每一个都被重定向到触发器页面!

在此先感谢。

回答

0

错误地使用标志N您需要L标志。用下面的代码替换你的代码:

RewriteCond "%{QUERY_STRING} search=flip flops" [NC] 
RewriteRule ^store/index\.php$ http://www.stonemenswear.co.uk//menswear/flip-flops/? [R=301,L,NC] 

RewriteCond %{QUERY_STRING} ^search=Boss\+Orange\+Shorts(&|$) [NC] 
RewriteRule ^store/index\.php$ http://www.stonemenswear.co.uk/menswear/shorts/? [R=301,L,NC] 
+0

嗨,感谢您的快速回复。它不幸为我工作。 虽然我在自己的代码中意识到了一个错误,但我猜测规则应该以/ store/index开始,而不仅仅是索引。我将如何将它纳入你刚才的建议。 谢谢 –

+0

修改了代码。 – anubhava

+0

谢谢,但它现在不是重定向,它只是继续调出旧页面。 –

0

这里有一些小的语法错误。

RewriteCond %{QUERY_STRING} "^search=flip flops$" [NC] 
RewriteRule ^store/index\.php$ http://www.stonemenswear.co.uk/menswear/flip-flops/? [R=301,L] 
RewriteCond %{QUERY_STRING} ^search=Boss\+Orange\+Shorts$ [NC] 
RewriteRule ^store/index\.php$ http://www.stonemenswear.co.uk/menswear/shorts/? [R=301,L] 
相关问题