2013-10-24 177 views
0

我試圖重寫以下網址:htaccess的重寫GET請求到另一個GET請求

http://mysite.com/app/checkout/success?token=2V5W&PayerID=WBBQER 

http://mysite.com/app/index.php?url=checkout/process/2V5W/WBBQER 


只需要在格式的GET請求該重寫(/checkout/success?token = xx & payerID = xx),其中「token」「payerID」是固定的參數。

我也包括我目前的.htaccess我:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.+)$ index.php?url=$1 

我一直在努力都無濟於事無數的.htaccess的可能性,以便您的幫助將不勝感激。

+0

沒有足夠的時間來寫一個答案,但這個想法是,你作出這樣的描述你想要的參數格式的RewriteCond。 (分析'%{QUERY_STRING}'變量)。然後重寫。這個答案應該是有幫助的:http://stackoverflow.com/questions/2703821/problem-with-rewritecond-query-string-backreference-not-dispaying-in-final-u – naivists

回答

4

試試這個

RewriteCond %{QUERY_STRING} ^token=([^\&]+)&PayerID=(.*)$ [NC] 
RewriteRule ^app/checkout/success$ http://mysite.com/app/index.php?url=checkout/process/$1/$2 [R=301,NE,NC,L] 
+0

偉大的,這工程就像一個魅力!只需將「$ 1」和「$ 2」更改爲「%1」和「%2」即可。順便說一句,「標記」變量可能在其中包含破折號( - )。這些還會被檢測到嗎? – raskolnnikov

+0

是的。這也會使用破折號,因爲正則表達式將匹配任何不是&字符的東西。如果您對此解決方案感到滿意,請不要忘記加註:) –