我想重定向以下字符串 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 任何帮助欢迎
答案 0 :(得分:0)
这是因为你的重写条件错误地放置了?
。在正则表达式?
中,前一个组可选,这会在您的查询字符串中生成1
或3
选项。
请改用以下规则:
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]