QUERY_STRING只显示第一个参数
问题描述:
我只能访问我的第一个URL参数。我认为这是因为我的RewriteRule以及QUERY_STRING都有&符号。我如何在PHP脚本中正确访问每个参数?QUERY_STRING只显示第一个参数
我正在给
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"}
您会注意到“颜色”:“蓝色”不再具有等号并且不包含在“pa”中公羊”。
如果我因此显示`json_enocde($ _ GET [ 'PARAMS'])我得到的是这样的:
"type=fast"
我能做些什么来获取全套的参数?这是我的.htaccess或我的PHP文件的问题?
答
你不需要使用QSA
标志追加现有的查询字符串的目标,如果你正在修改的查询参数使用%{QUERY_STRING}
的目标。
你可以用你的规则为:
RewriteRule ^(.+)$ index.php?q=%{REQUEST_URI}&api=$1 [L,QSA]
答
好吧,如果你想想发生转变:
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"
}
如果你想PARAMS,然后你可以只取出q
和api
您的$_GET
的密钥。
您的规则应改为:'重写规则^(+)$的index.php Q =%{REQUEST_URI}&API = $ 1 [L,QSA] ' – anubhava
@anubhava谢谢,这对我们有很大的帮助。起初,我被逗号后的空格卡住了,但没有完美的空间。你想发布一个答案让我接受吗? – kojow7