2012-05-06 4 views
0

내 프로젝트에는 다른 웹 사이트에 대한 데이터가 있으므로 .htaccess를 사용하여 URL을 다시 작성하므로 누군가 내 웹 사이트에 점 (.)이 포함 된 이름을 전달하면 site.php 페이지가 표시됩니다. 여기 내 코드는 다음과 같습니다.매개 변수를 되짚어보기 URL로 바꾸기

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9\_\-]+(\.)[a-zA-Z0-9\_\.\-]+)/?$ site.php?url=$1 
RewriteRule contact$ contact.php 

이것은 site.php에 매개 변수로 사이트 이름을 보냅니다. 이제 전달할 수있는 매개 변수가 하나 더 필요합니다. 예를 들어, 일반적으로 전달 될 수있는 매개 변수입니다. 사이트가 실시간으로 업데이트 된 데이터를 얻길 원하고, ?update=true을 전달하여 데이터베이스에서 데이터를 가져 오는 대신 인터넷에서 데이터를 업데이트합니다. 그러나이

http://www.mysite.com/anysite.com?update=true 

같은 매개 변수 전달이 작동하지 않는 경우, 어떻게 기존 재 작성 URL에 추가 매개 변수를 전달할 수 있습니다?

답변

2

[QSA] 플래그 ("쿼리 문자열 추가")는 수신 된 쿼리 문자열을 다시 작성된 URL에 추가합니다. 또한 첫 번째 규칙에 일치하는 것을 방지하기 위해 모범 사례로 [L] 플래그를 추가했습니다. 나중에 체인에 추가 규칙을 추가하는 것이 좋습니다.

: 내가 문제를 잘못 이해하고있는 경우

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9\_\-]+(\.)[a-zA-Z0-9\_\.\-]+)/?$ site.php?url=$1 [QSA,L] 
RewriteRule contact$ contact.php [QSA,L] 

그러나 update=true를 보내는 것이 아니라 단지, 모든 요청에 ​​강제 재 작성 규칙에 추가 할 수 브라우저에 대한 필요가 없습니다

RewriteRule ^([a-zA-Z0-9\_\-]+(\.)[a-zA-Z0-9\_\.\-]+)/?$ site.php?update=true&url=$1 [QSA,L] 
+1

FYI : QSA는 "쿼리 문자열 추가" – Pete

관련 문제