2013-05-28 88 views
0

已經在這個幾個小時了。如何爲PayPal IPN(htaccess)重寫規則?

我需要重定向

http://www.mywebsite.com/index.php?option=com_acctexp&task=paypal_subscriptionnotification&Itemid= 

http://www.mywebsite.com/dir/lib/ipn.php 

到目前爲止,我已經嘗試了所有像這樣的一種組合:

RewriteCond %{QUERY_STRING} ^option=com_acctexp&task=paypal_subscriptionnotification&Itemid=$ 
RewriteRule ^(.*)$ /dir/lib/ipn.php [L] 

[L]也被替換[R = 301,L]幾乎沒有成功

我在這裏有些磕磕絆絆,因爲我並不完全知道自己在做什麼。我已經閱讀了Apache文檔,但對我來說這很神祕。我不想保留查詢字符串,但是我想保留與ipn一起發送的json數據。

回答

0

在您的模式結束時意味着它必須完全匹配 - 查詢字符串必須在=上結尾,否則附加itemid值會導致匹配失敗。要通過請求,您不想執行301重定向,這將導致新的請求。要刪除查詢字符串並阻止循環,請在重寫結束時添加一個?

RewriteBase/
RewriteCond %{QUERY_STRING} ^option=com_acctexp&task=paypal_subscriptionnotification&Itemid=([^&]+?) 
RewriteRule (.*) /dir/lib/ipn.php? [L] 

http://htaccess.madewithlove.be/

Input: http://www.example.com?option=com_acctexp&task=paypal_subscriptionnotification&Itemid=123 

1 RewriteBase/ 
2 RewriteCond %{QUERY_STRING} ^option=com_acctexp&task=paypal_subscriptionnotification&Itemid=([^&]+?) 
    This condition was met 
3 RewriteRule (.*) /dir/lib/ipn.php? [L] 
    This rule was met, the new url is http://www.example.com/dir/lib/ipn.php 

    The tests are stopped because the L in your RewriteRule options 

Output: http://www.example.com/dir/lib/ipn.php 
+0

測試 「*的&*」。你的意思是「''''」? –

+0

哎呀,是的......我做到了。修正了,謝謝。 – doublesharp