2013-07-11 64 views
0

我想在我的.htaccess文件中寫入具有以下行爲的重寫規則。我做它位於一個真實位置的形式的API:Mod用額外的查詢字符串重寫人造目錄路徑

https://www.domain.com/apifolder/entry.php?call=testcall&data=testdata 

的API呼叫路由從entry.php開始,並最終提供適當的響應。本質上,我的整個API都基於有效API調用的大型開關語句。問題是,該URL不是很好。我想這種形式的URL來替代它:

https://www.domain.com/api/testcall?data=testdata 

我有以下重寫規則得到接近:

RewriteRule ^api/([^/]+)/? /apifolder/entry.php?call=$1 [L] 

然而,理想的例子上述方法無效,因爲有第一個參數似乎進來(數據,這實際上是第二個參數),由。如果我嘗試的網址:

https://www.domain.com/api/testcall&data=testdata 

在那裏的由&,而不是主導,那麼它完美的罰款。可悲的是,這對我來說也很奇怪。有什麼我可以做的,讓重寫的網址以開頭的查詢字符串?取而代之?

回答

0

我管理通過包括在規則中的[QSA]標誌,它通過查詢字符串(在其期望的格式),以真實的URL來解決這個問題:

RewriteRule ^api/([^/]+)/? /apifolder/entry.php?call=$1 [QSA,L] 

我嘗試了看到這個StackOverflow的後回答:Match Question Mark in mod_rewrite rule regex

相關問題