在舱口中重定向到具有类似参数的不同URL

时间:2014-10-06 11:47:54

标签: regex apache .htaccess mod-rewrite

我想重定向以下字符串  productdetails.asp PID = 23&安​​培; CID = 1 要么 productdetails.asp PID = 23&安​​培; CID = 3 pid可以是我有以下任何数字:

RewriteCond %{QUERY_STRING} ^pid=([0-9]+)&cid=1?
RewriteRule ^productdetails\.asp$ /Compare/Roland-Digital-Pianos? [L,NC,R=301]
RewriteCond %{QUERY_STRING} ^pid=([0-9]+)&cid=3?
RewriteRule ^productdetails\.asp$ /Compare/Kawai-Digital-Pianos? [L,NC,R=301]

但出于某种原因,当cid = 3时,它仍会重写为/ Compare / Roland-Digital-Pianos 虽然我想要它去比较/ Kawai-Digital-Pianos 任何帮助欢迎

1 个答案:

答案 0 :(得分:0)

这是因为你的重写条件错误地放置了?。在正则表达式?中,前一个组可选,这会在您的查询字符串中生成13选项。

请改用以下规则:

RewriteCond %{QUERY_STRING} ^pid=([0-9]+)&cid=1(&|$) [NC]
RewriteRule ^productdetails\.asp$ /Compare/Roland-Digital-Pianos? [L,NC,R=301]
RewriteCond %{QUERY_STRING} ^pid=([0-9]+)&cid=3(&|$) [NC]
RewriteRule ^productdetails\.asp$ /Compare/Kawai-Digital-Pianos? [L,NC,R=301]