0

我正在尝试在具有以下行为的 .htaccess 文件中编写重写规则。我正在为一个位于真实位置的 API 做这件事,其形式为:

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

API 调用从entry.php开始路由并最终传递适当的响应。基本上我的整个 API 都依赖于有效 API 调用的大型 switch 语句。问题是,那个 URL 不是很好。我正在尝试用这种形式的 URL 替换它:

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

我已经接近以下重写规则:

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

但是,上面所需的示例不起作用,因为似乎进入的第一个参数(data,实际上是第二个参数)由? . 如果我尝试网址:

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

它由&引导,然后它工作得非常好。可悲的是,这对我来说也很奇怪。我可以做些什么来让重写的 URL 接收以 a 开头的查询字符串反而?

4

1 回答 1

0

我设法通过在规则中包含 [QSA] 标志来解决这个问题,它将查询字符串(以其所需的格式)传递给真实的 URL:

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

我在看到这个 StackOverflow 答案后尝试了它:Match Question Mark in mod_rewrite rule regex

于 2013-07-17T02:27:29.030 回答