쉬운. 이에서 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 % 다른 정보를 반환 할 가능성이 큽니다. 그러나 기본적인 개념은 견고합니다.
... aaaaand 나는 RewriteRule을 통해 무사히 쿼리 매개 변수를 전송하는 방법을 알고 싶다고 가정합니다. – deceze
짧은 답변이 허용 되었다면 ... RewriteRule의 끝에 [QSA]를 추가하십시오. ("1"과 "[QSA]"사이에 공백을 넣으십시오!) – Kinnectus
@BigChris 당신은 길게 대답 할 수 있습니다 당신이 그 과정을 설명 할 때. – JakeGould