我只能访问我的第一个URL参数。我认为这是因为我的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"}您会注意到,"color":"blue“不再有等号,并且不包含在"params”中。
因此,如果我显示`json_enocde($_ get‘’params‘),我得到的只有以下内容:
"type=fast"我能做些什么来获得完整的参数?这是我的.htaccess或我的PHP文件的问题吗?
发布于 2017-05-09 17:23:19
如果要修改查询参数,则不需要在目标中使用附加现有查询字符串的%{QUERY_STRING}标志。
您可以将您的规则用作:
RewriteRule ^(.+)$ index.php?q=%{REQUEST_URI}&api=$1 [L,QSA]发布于 2017-05-09 00:00:00
好吧,如果你想到发生的转变:
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键。
https://stackoverflow.com/questions/43858917
复制相似问题