2017-05-08 71 views
1

我只能訪問我的第一個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}&params=%{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文件的問題?

+1

您的規則應改爲:'重寫規則^(+)$的index.php Q =%{REQUEST_URI}&API = $ 1 [L,QSA] ' – anubhava

+1

@anubhava謝謝,這對我們有很大的幫助。起初,我被逗號後的空格卡住了,但沒有完美的空間。你想發佈一個答案讓我接受嗎? – kojow7

回答

1

你不需要使用QSA標誌追加現有的查詢字符串的目標,如果你正在修改的查詢參數使用%{QUERY_STRING}的目標。

你可以用你的規則爲:

RewriteRule ^(.+)$ index.php?q=%{REQUEST_URI}&api=$1 [L,QSA] 
0

好吧,如果你想想發生轉變:

index.php?q=%{REQUEST_URI}&params=%{QUERY_STRING}&api=$1 

變爲:

index.php?q=/subdir/api/transport/1/car&params=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,然後你可以只取出qapi您的$_GET的密鑰。