2014-10-06 40 views
1

我想重定向以下字符串 productdetails.asp?PID = 23 & CID = 1 或 productdetails.asp?PID = 23 & CID = 3 PID可以是任何數我有以下幾點:重定向到不同的URL與艙口類似參數

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仍重寫到/比較/羅蘭 - 數字 - 鋼琴 ,而我希望它去比較/河合數碼-鋼琴 任何某些原因幫助歡迎您

回答

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] 
+0

再次感謝這麼多。我認爲(&| $)是什麼使得cid = 1是唯一的? – Ria 2014-10-06 12:11:09

+0

'(&| $)'確保我們不匹配'&cid = 11'和'&cid = 300'類型的查詢字符串。 – anubhava 2014-10-06 13:59:17

+1

如果你有時間可以幫助解決以下問題?提前致謝。 http://stackoverflow.com/questions/26606516/redirect-with-form-variable-doesnt-work-properly。這對我來說是一個新問題,使用$ _POST變量而不是$ _GET – Ria 2014-10-28 11:00:45