2012-10-13 2 views
1

지금 웹에서 며칠 동안 검색했지만 내 질문에 대한 모든 anwser를 찾지 못했습니다. 이것은 내가하고 싶은 일입니다 :가상 하위 도메인을 하위 폴더로 다시 작성하고 원본 URL 유지

내 사이트의 모든 사용자는 http://username.domain.com과 같은 개인 하위 도메인을받습니다. 물론 가상 하위 도메인입니다.

지금, 나는 이미 설정 와일드 카드 레코드를 DNS, mod_rewrite를 ON 설정하고이 일을 달성 :

누군가가 HTTP로 서핑 할 때 : // anysubdomain.domain.com가 HTTP로 리디렉션됩니다 : // www.domain.com/sub/index.php?var=anysubdomain. index.php에는 'var'변수 (하위 도메인의 이름)를 기반으로 고유 정보를 얻는 함수가 있습니다.

내가하고 싶은 일은 누군가 http : // anysubdomain.domain.com으로 서핑 중일 때 http : // www.domain.com/sub/index.php?var=anysubdomain으로 리디렉션되었을 때입니다. 지금은) 원래 URL (http : // anysubdomain.domain.com)은 브라우저 표시 줄에 보관됩니다. 그래서 모든 사용자는 자신의 하위 도메인을 가지고있는 것처럼 보입니다.

이것은 내가 현재 사용 htaccess로 파일입니다

RewriteEngine On 
Options +FollowSymlinks 


RewriteCond %{HTTP_HOST} !^www\.domain\.com 
RewriteCond %{HTTP_HOST} !^static\.domain\.com 
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)\.domain.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com/sub/index.php?username=%2 [L] 

하지 않을 경우 나는 모든 것이 분명하다 희망 : 질문하고 내가 더 많은 정보를 제공!

미리 감사드립니다.

만큼 모든 하위 도메인과 기본 도메인의 주 같은 문서 루트로, 당신은 당신의 규칙에서 http://www.domain.com 비트 제거 할 수 유리

답변

0

: 그렇지 않으면

RewriteCond %{HTTP_HOST} !^www\.domain\.com 
RewriteCond %{HTTP_HOST} !^static\.domain\.com 
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)\.domain.com$ [NC] 
RewriteRule ^(.*)$ /sub/index.php?username=%2 [L] 

, 당신은거야 P 플래그를 추가하여 mod_proxy를 사용할 필요가 :

RewriteCond %{HTTP_HOST} !^www\.domain\.com 
RewriteCond %{HTTP_HOST} !^static\.domain\.com 
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)\.domain.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com/sub/index.php?username=%2 [L,P] 

를가 첫 번째 방법은 훨씬 더 효율적이 될 것지만.

+0

내 모든 하위 도메인이 기본 도메인과 동일한 문서 루트를 갖도록하려면 어떻게해야합니까? /domains/domain.com/htdocs/ - 기본 도메인 내 하위 도메인은 정적 (정적 하위 도메인 제외)이기 때문에 실제로 루트가 없습니다 (또는 잘못된?). 내 .htaccess 파일에서 'http://www.domain.com'을 제거하면 500 개의 내부 서버 오류가 발생합니다. mod_proxy를 P 플래그를 추가하여 사용하는 경우와 같습니다. – YuriH

+0

@YuriH 모든 하위 도메인이 동일한 문서 루트를 가질 가능성이 높습니다. 그렇지 않으면 호스팅 서비스의 지원 부서에 문의 할 필요가 없습니다. –

관련 문제