2013-07-02 10 views
1

나는 흥미로운 mod_rewrite 규칙을 요구하기 전에 우연히 만난 적이없는 상황이 있으며 유사한 구성에서 동일한 것을 달성하려는 사람의 예를 찾을 수 없습니다.mod 재 작성 폭발 % {HTTP_HOST}

현재 동일한 문서 루트를 공유하도록 구성된 두 개의 도메인 이름이 있습니다.이 문서 루트에는 들어오는 호스트 이름을 기반으로하는 동적 PHP 응용 프로그램이 해당 도메인에 관련된 내용을 표시합니다. 예시적인 목적

도메인은 같습니다

www.example1.com 

www.example2.co.uk 

이 애플리케이션 외에 (하나가 다른 아닌 TLD 인) 개의 워드 설치 한 거기 두 도메인 이름 각각에 대해 여기서 우리는 wordpress MU를 사용하지 않기 때문에, 먼저 wordrpess 폴더를 숨기고, HTTP_HOST를 기반으로 올바른 폴더에 요청을 표시하는 멋진 재 작성이 필요합니다. 콘텐츠를 특정 페이지에 대한

RewriteRule ^wp-content(.*) wordpress/example1$1 [L] 
RewriteRule ^wp-admin(.*) wordpress/example1/wp-admin$1 [L] 
RewriteRule ^wp-login.php$ wordpress/example1/wp-login.php [L,R=301] 

와 유사한 규칙 :

현재 나는 다음 있습니다.

RewriteRule ^wp-admin(.*) wordpress/${HTTP_HOST}/wp-admin$1 [L] 

그러나 나는 www를 삭제해야합니다

이것은 하나의 워드 프레스 설치를 위해 잘 작동하지만, 분명히하지 않는 초, 제가 여기서 뭘 바라고하는 것은 다음과 같은 일이었다. $ {HTTP_HOST} 변수 (또는 www.와 .co.uk)에서 .com을 가져 오십시오.

이 방법이나 더 나은 방법을 얻으려는 제안이 있으면 감사하겠습니다.

답변

0

RewriteCond를 사용하여 HTTP_HOST의 패턴을 확인한 다음 해당 패턴의 일부를 캡처 할 수 있습니다. 예컨대

: HTTP_HOST는 ".COM"또는 ".co.uk에서"을 임의로 시작 종료 도메인 패턴 맞는지 확인 상술

RewriteCond %{HTTP_HOST} ^(?:www\.)?([a-zA-Z0-9_-]+)\.(?:com|co\.uk)$ 
RewriteRule ^wp-admin(.*) wordpress/%1/wp-admin$1 [L] 

한다 RewriteCond 지시자보고 "WWW한다.". 도메인 이름이 있으면 도메인 이름의 흥미로운 부분을 캡처합니다.

그런 다음 RewriteRule (RewriteCond가 일치하는 경우에만 실행 됨)은 %1 역 참조를 사용하여 RewriteCond 패턴의 캡처 된 부분을 참조 할 수 있습니다.

위의 RewriteCond에서 사용한 패턴은 사용자의 요구에 완벽하게 맞지 않을 수 있지만 RewriteCond에 의해 캡처 된 패턴에 대한 역 참조를 사용할 수 있다는 것을 알게되면이 패턴을 사용하여 쉽게 얻을 수 있습니다. 당신이 필요로하는 효과.

+0

완벽합니다. 정확히 내가 찾던 구문입니다. 감사합니다 Arkanon –

+1

또한 simlar 뭔가를 찾고 다른 사람을 위해, 나는 위의 과정을 사용하여 내가 여러 조건을 가지고 있지 않았기 때문에 다시 작성 규칙에서 사용할 수있는 환경 변수를 설정할 수 있습니다. 'RewriteRule.? - [E = Wp : % 1]' 'RewriteRule^wp-admin (. *) wordpress/% {ENV : Wp}/wp-admin $ 1 [L]' –