2017-03-07 70 views
0

我有設置以下的htaccess重寫規則:重寫的PayPal令牌URL

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)$ /index.php?id=$1 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ /index.php?id=$1 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)$ /index.php?id=$1&sub=$2 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)/$ /index.php?id=$1&sub=$2 [L] 

一切都很好,直到它處理支付寶真。貝寶返回成功,網址是這樣的:

http://example.com/checkout/success?token=EC-33Y7337627092313R&PayerID=QFQHDF7LULQR8 

女巫導致付款爲「失敗」,因爲在URL中-Questionmark的 - 當與& -Ampersand取代一切都很好?

解決此問題的最佳實踐/重寫條件是什麼?

感謝您的幫助!

回答

0

您的規則正在替換查詢字符串,因此您的tokenPayerID參數完全丟失。

the [QSA] flag添加到您的規則以保留查詢參數。

+0

備註:您可以減少您在'.htaccess'中需要的規則數量。 'RewriteRule ^([^ /] +)/?$ /index.php?id=$1 [L]'將通過'/?'覆蓋尾部斜線和非尾部斜線版本。第二套規則也可以做同樣的事情。 – ceejayoz

+0

非常感謝你! – maunel