2013-10-24 210 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

是的。这也会使用破折号,因为正则表达式将匹配任何不是&字符的东西。如果您对此解决方案感到满意,请不要忘记加注:) –