2014-06-17 6 views
0

내 MVC 앱을 만들었습니다. 그리고 나는 .htaccess에 다음 RewriteRule의를 사용하고 있습니다 :

RewriteEngine on 
RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1 

을 그리고 난이 URL에 갈 때 :

http://localhost/myapp/dahsboard/index 

나는 나의 변수가 $_GET['p']=dahsboard/index & 작동 얻을.

하지만 jQueryUI에서 Ajax와 함께 AutoComplete를 사용하고 AutoComplete에서 사용하는 입력 값과 함께 $_GET['term'] 변수를 보냅니다.

내 URL은 다음과 같습니다

http://localhost/myapp/dashboard/index?term='myvalue' 

.htaccess가 해결되지 않는 내가 어떻게가 모른다.

+0

... aaaaand 나는 RewriteRule을 통해 무사히 쿼리 매개 변수를 전송하는 방법을 알고 싶다고 가정합니다. – deceze

+1

짧은 답변이 허용 되었다면 ... RewriteRule의 끝에 [QSA]를 추가하십시오. ("1"과 "[QSA]"사이에 공백을 넣으십시오!) – Kinnectus

+0

@BigChris 당신은 길게 대답 할 수 있습니다 당신이 그 과정을 설명 할 때. – JakeGould

답변

0

쉬운. 이에서 RewriteRule의 변경이로

RewriteEngine on 
RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1 

을 :

RewriteEngine on 
RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1 [L,QSA] 

는 다시 목적지까지의 쿼리 문자열을 통해 수행 할 QSA flag 사용한다.

그래서 당신은이 URL에 갈 때 :

http://localhost/myapp/dahsboard/index?term='myvalue' 

은 다음과 같이 전달됩니다

http://localhost/myapp/dahsboard/index.php?p=index&term=myvalue 

을 그리고 나는 index.php에 다음과 같은 배치하면 :

<?php 

echo '<pre>'; 
print_r($_GET); 
echo '</pre>'; 

?> 

반환 된 결과는 다음과 같습니다.

0 또한 1,233,481,248,663,417,

, 쉽게이 같은 L & QSA에 추가 R 플래그를 사용하여 당신이 그렇게 할 수있는 결과를 디버깅 할 경우 : 아파치 헤더를 확인하기 위해 curl -I를 실행 한 후

RewriteEngine on 
RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1 [L,R,QSA] 

을 그리고있는

curl -I http://localhost:8888/myapp/dahsboard/index?term='myvalue' 
HTTP/1.1 302 Found 
Date: Tue, 17 Jun 2014 16:07:29 GMT 
Server: Apache/2.2.23 (Unix) mod_ssl/2.2.23 OpenSSL/0.9.8r DAV/2 PHP/5.4.10 
Location: http://localhost:8888/Applications/MAMP/htdocs/myapp/dahsboard/index.php?p=index&term=myvalue 
Content-Type: text/html; charset=iso-8859-1 

지금 예, R 플래그를 추가합니다 : 그것은 Location: 헤더를 통해 URL을 보낼 곳을 알려해야 URL에 /Applications/MAMP/htdocs/의 추가 경로 정보 나는 그것이 일어나는 이유에 대해 100 % 확실하지 않습니다. 그러나 이와 같은 기본적인 디버깅을 위해서는 헤더를 잘 읽고 index.php?p=index&term=myvalue의 최종 목적지가 전송되고 있는지 확인할 수 있습니다. 그리고 일단 이러한 사실을 알게되면,이 규칙을 생산에 적용 할 때 R 플래그를 제거하십시오.

FWIW의 경우 http://localhost:8888/Applications/MAMP/은 Mac OS X의 로컬 MAMP 설정을 반영합니다. 따라서 무시하십시오. 로컬 설정은 100 % 다른 정보를 반환 할 가능성이 큽니다. 그러나 기본적인 개념은 견고합니다.

+0

사실 내 index.php는 myapp 폴더에있다. 귀하의 추천을 따르십시오 내 print_r ($ _ GET), 반환 : 배열 ([0] => 대시 보드 [1] => 검색) URL은 : http : // localhost/logipsy/dashboard/search? term = – Alexking2005

+0

당신의'.htaccess'? – JakeGould

+0

C :에 "myapp"라는 디렉토리를 만들고 WAMP에 "myapp"라는 별칭을 만들었습니다 .htaccess는 "myapp"디렉토리에 있습니다 – Alexking2005

0

새 쿼리 문자열과 이전 쿼리 문자열을 결합하려면 [QSA] 플래그를 사용하십시오.

RewriteEngine on 
RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1 [QSA]