2012-11-15 44 views
2

當我用htaccess重寫URL時,我很綠,儘管我可以做基礎知識。在htaccess中替換查詢字符串的一部分

在這種情況下,我有一系列查詢字符串從供應商返回到我的一個腳本。除了當它包含一個帶有'http'或'https'的URL時,這一切都很好。當它檢測到時,Apache會拋出403 Forbidden錯誤。我認爲我可以製作一個RewriteRule,它可以將查詢字符串的'http'部分重寫爲可以超越Apache規則的東西。

這將最終安裝在客戶機上,因此我無法更改任何服務器設置。

一個例子網址是:

http://mysite.com/gocardless_confirm.php?resource_uri=https%3A%2F%2Fsandbox.gocardless.com%2Fapi%2Fv1%2Fbills%2F07F56ERHRT 

這是我試圖要使用的設置:

RewriteCond ${QUERY_STRING} ^(.*)$resource_uri=http^(.*)$ 
RewriteCond %{REQUEST_URI} ^gocardless_confirm.php 
RewriteRule ^(.*)$ gocardless_confirm.php?$1resource_uri=hllp$2 [L] 

我怎麼可以重寫這個部分,所以我可以簡單地得到的腳本?

謝謝!

+0

你想得到什麼樣的網址?因爲你的正則表達式是無效的,我什麼都不懂。 – vmeln

回答

0

嘗試:在的RewriteCond

RewriteCond %{QUERY_STRING} ^(.*)resource_uri=http(.*)$ 
RewriteRule ^gocardless_confirm.php$ gocardless_confirm.php?%1resource_uri=hllp%2 [L] 

子模式都在重寫規則中引用%#
^是模式匹配的孔串的開始。
$與其結尾相符。