首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QUERY_STRING只显示第一个参数

QUERY_STRING只显示第一个参数
EN

Stack Overflow用户
提问于 2017-05-08 23:51:21
回答 2查看 131关注 0票数 1

我只能访问我的第一个URL参数。我认为这是因为我的RewriteRule和QUERY_STRING中都有符号。如何正确访问PHP脚本中的每个参数?

我请求

代码语言:javascript
复制
http://example.com/subdir/api/transport/1/car?type=fast&color=blue"

在我的.htaccess文件中,我有以下一行:

代码语言:javascript
复制
RewriteRule ^(.+)$ index.php?q=%{REQUEST_URI}&params=%{QUERY_STRING}&api=$1 [L]

在我的PHP中,显示json_encode($_GET)会产生:

代码语言:javascript
复制
 {"q":"\/subdir\/api\/transport\/1\/car","params":"type=fast","color":"blue","api":"transport\/1\/car"}

您会注意到,"color":"blue“不再有等号,并且不包含在"params”中。

因此,如果我显示`json_enocde($_ get‘’params‘),我得到的只有以下内容:

代码语言:javascript
复制
"type=fast"

我能做些什么来获得完整的参数?这是我的.htaccess或我的PHP文件的问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-09 17:23:19

如果要修改查询参数,则不需要在目标中使用附加现有查询字符串的%{QUERY_STRING}标志。

您可以将您的规则用作:

代码语言:javascript
复制
RewriteRule ^(.+)$ index.php?q=%{REQUEST_URI}&api=$1 [L,QSA]
票数 1
EN

Stack Overflow用户

发布于 2017-05-09 00:00:00

好吧,如果你想到发生的转变:

代码语言:javascript
复制
index.php?q=%{REQUEST_URI}&params=%{QUERY_STRING}&api=$1

变成:

代码语言:javascript
复制
index.php?q=/subdir/api/transport/1/car&params=type=fast&color=blue&api=transport/1/car"

所以,你当然是为了你的$_GET而得到的。

我要做的是将重写更改为:

代码语言:javascript
复制
index.php?q=%{REQUEST_URI}&%{QUERY_STRING}&api=$1

然后在您的代码中您将得到:

代码语言:javascript
复制
{
    "q":"\/subdir\/api\/transport\/1\/car",
    "type": "fast",
    "color":"blue",
    "api":"transport\/1\/car"
}

如果您想要参数,那么您可以从您的qapi键中移除$_GET键。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43858917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档