我只能访问我的第一个网址参数。我想是因为我的RewriteRule以及QUERY_STRING都有&符号。如何在PHP脚本中正确访问每个参数?
我正在向
提出请求http://example.com/subdir/api/transport/1/car?type=fast&color=blue"
在我的.htaccess文件中,我有以下一行:
RewriteRule ^(.+)$ index.php?q=%{REQUEST_URI}¶ms=%{QUERY_STRING}&api=$1 [L]
在我的PHP中,显示json_encode($_GET)
会产生:
{"q":"\/subdir\/api\/transport\/1\/car","params":"type=fast","color":"blue","api":"transport\/1\/car"}
您会注意到“颜色”:“蓝色”不再具有等号,并且不包含在“params”中。
如果我因此显示`json_enocde($ _ GET ['params']),我得到的是以下内容:
"type=fast"
如何获取全套参数?这是我的.htaccess或我的PHP文件的问题吗?
答案 0 :(得分:1)
如果要修改查询参数,则不需要使用%{QUERY_STRING}
标记在目标中使用QSA
,如果要修改查询参数,则将现有查询字符串附加到目标。
您可以将您的规则用作:
RewriteRule ^(.+)$ index.php?q=%{REQUEST_URI}&api=$1 [L,QSA]
答案 1 :(得分:0)
好吧,如果你考虑发生的转变:
index.php?q=%{REQUEST_URI}¶ms=%{QUERY_STRING}&api=$1
变为:
index.php?q=/subdir/api/transport/1/car¶ms=type=fast&color=blue&api=transport/1/car"
因此,对于当然,您可以获得$_GET
。
我要做的是将重写更改为:
index.php?q=%{REQUEST_URI}&%{QUERY_STRING}&api=$1
然后在你的代码中你会得到:
{
"q":"\/subdir\/api\/transport\/1\/car",
"type": "fast",
"color":"blue",
"api":"transport\/1\/car"
}
如果你想要参数,你可以从q
中删除api
和$_GET
个键。