htaccess多个查询字符串重定向到不同的URL

时间:2013-08-30 10:11:21

标签: php apache .htaccess redirect mod-rewrite

我在htaccess中尝试重定向时我是全新的,但是有一个大约20个网址的列表,所有网址都有查询字符串,所有网址都不同。

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

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

以下是我需要重定向的几个网址:

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

/store/index.php?search=Boss+Orange+Shorts>> 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]

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

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

提前致谢。

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分: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]