2013-07-11 31 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

相关问题