2017-05-08 2 views
1

내 첫 번째 URL 매개 변수에만 액세스 할 수 있습니다. 내 RewriteRule과 QUERY_STRING에 모두 앰퍼샌드가 있기 때문에 생각합니다. PHP 스크립트에서 각 매개 변수에 올바르게 액세스하려면 어떻게합니까?QUERY_STRING은 첫 번째 매개 변수 만 표시합니다.

내가 다음 줄이 내 htaccess로 파일에서

http://example.com/subdir/api/transport/1/car?type=fast&color=blue" 

에 요청하고있다 : json_encode($_GET)를 표시, 내 PHP에서

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

는 생산 :

{"q":"\/subdir\/api\/transport\/1\/car","params":"type=fast","color":"blue","api":"transport\/1\/car"} 

"color": "blue"는 더 이상 등호가없고 "pa"안에 포함되지 않습니다. 숫양 ".

I 따라서`json_enocde 표시하는 경우

($ _ GET [ '의 PARAMS는']) 내가 얻을 모두는 다음과 같다 :

"type=fast" 

I 매개 변수의 전체 세트를 획득하기 위해 무엇을 할 수 있는가? .htaccess 또는 PHP 파일에 문제가 있습니까?

+1

귀하의 규칙을 변경해야합니다 :로

당신은 당신의 규칙을 사용할 수있는'한다 RewriteRule^(+.) $ 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 

: 그리고 당신이 PARAMS를 원하는 경우

{ 
    "q":"\/subdir\/api\/transport\/1\/car", 
    "type": "fast", 
    "color":"blue", 
    "api":"transport\/1\/car" 
} 

, 당신이 다음 단지 q을 제거 할 수 있습니다 내가 어떻게 할 것인지

는로 재 작성을 변경할 수있다 $_GETapi 키가 있습니다.

관련 문제