
각 사용자가 하위 도메인과 자신의 데이터베이스를 갖게 되는 시스템이 있습니다. 전:
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
는 단순히 잘못된 요청을 포착하기 위한 것입니다.