htaccess로 두 개 이상의 매개변수 전달

htaccess로 두 개 이상의 매개변수 전달

각 사용자가 하위 도메인과 자신의 데이터베이스를 갖게 되는 시스템이 있습니다. 전:

usuarioa.system.com
usuariob.system.com

시스템을 검색하는 동안 탐색 모음에 하위 디렉터리를 유지하기 위해 다음 규칙을 사용했습니다.

RewriteEngine on
RewriteCond% {HTTP_HOST} ^ usera.system.com $ [OR]
RewriteCond% {HTTP_HOST} ^ www.usera.system.com $
RewriteRule ^ (. *) $ http://www.system.com/access/$ 1? user = usera [P]

$_REQUEST를 사용하는 PHP를 통해 올바른 데이터베이스에 직접 연결되기 때문에 완벽하게 작동합니다. 문제는 이 규칙이 둘 이상의 매개변수를 허용하지 않고 변경하면 오류 403이 발생한다는 것입니다. 그래서 PHP에서 임시 솔루션을 만들었지만 계속해서 사용하고 싶지 않습니다.

list ($queryString, $id) = explode ("user =", $ _SERVER [' REQUEST_URI ']);
list ($id, $idUsu) = explode (".", $id);

탐색 모음의 하위 디렉터리를 유지하면서 htaccess를 통해 직접 02 매개변수를 전달하려면 어떻게 해야 합니까?

영어로 말해서 죄송합니다. Bing 번역기를 사용하고 있습니다.

답변1

RewriteRule ^ (. *) $ http://www.system.com/access/$ 1? user = usera [P]

원래 요청에 있던 추가 쿼리 문자열 매개변수를치환QSA, 지시문에 (Query String Append) 플래그가 필요합니다 RewriteRule.

깃발QSA병합요청에서 지정한 쿼리 문자열을 포함한 쿼리 문자열치환그렇지 않으면 명시한 쿼리 문자열이 요청의 쿼리 문자열을 덮어쓰게 되며 전달되지 않습니다.

예를 들어:

RewriteRule (.*) http://www.system.com/access/$1?user=usera [QSA,P]

곁에:이것...

RewriteCond% {HTTP_HOST} ^usera.system.com$ [OR]
RewriteCond% {HTTP_HOST} ^www.usera.system.com$

다음과 동일하며 FQDN(점으로 끝남)도 허용합니다.

RewriteCond% {HTTP_HOST} ^(www\.)?usera\.system\.com [NC]

문자 그대로의 점과 일치하려면 점을 이스케이프 처리해야 합니다. 그렇지 않으면 일치하는 것입니다.어느성격. 플래그 NC는 단순히 잘못된 요청을 포착하기 위한 것입니다.

관련 정보