2009-04-22 4 views
5

(나는이 자체 프로그래밍 질문이 아니라는 것을 알고 있지만, 적어도 그 경계 그래서이 정규 표현식을 포함 ...)아파치와 mod_rewrite를 : 하위 디렉토리 도메인 리디렉션

셋업 :

Windows에서 mod_rewrite가있는 Apache 2.0. 두 개의 도메인, domain1.example 및 domain2.example이라고 부르 자. 두 도메인을 같은 서버 ("server1")에 호스트하고 싶습니다. 따라서 동일한 IP 주소로 연결합니다.

사용자가 브라우저에 "domain2.example"을 입력 한 경우 서버의 하위 디렉토리 **에 남겨두고 도메인을 그대로 남겨 두십시오 ("domain2.example/domain2 /").). 방향 전환은이 도메인/디렉토리 아래의 페이지에있는 절대 및 상대 링크를 그대로 유지해야합니다.

mod_rewrite (또는 Apache 가상 호스트 또는 다른 방법)를 사용할 수 있습니까? 어떻게 처리합니까?

**이 경우 "하위 디렉토리"는 실제로 디스크의 파일 폴더가 아니라 Apache "위치"지시어로 만들어진 가상 폴더입니다.

감사합니다.

답변

2

mod_rewrite를 사용해야한다고 생각하지 않습니다. 제안한 것처럼 가상 호스트를 사용할 수 있어야합니다. 이렇게하려면 원하는 디렉토리를 가리키는 servername domain2.example을 가진 하나의 가상 호스트가 있어야합니다. 또한 domain1.example에 대한 ServerAlias ​​지정 문을 사용하여 이에 대한 요청이 동일한 디렉토리로 이동합니다.

ServerAliasDocumentRoot에 대한 설명서를 참조하십시오. 또한 디렉토리에 URL을 표시하려면 에 mod_rewrite를 사용해야합니다.

3

도메인이 독립적이라고 가정하면 권장 솔루션은 가상 호스트입니다.

apache website에서 설명서를 찾을 수 있습니다.

+0

에 갈 것 윌 가상 호스트에서의 DocumentRoot 지시어 (config 섹션)은 실제 "위치"이고 서버의 실제 파일 폴더가 아닌 "서브 디렉토리"로 전달할 수 있습니까? – ObiWanKenobi

+0

위치가 아니라 파일 폴더가 무엇입니까? index.html/index.php/index.cgi가있는 곳이라면 DocumentRoot를 해당 파일이있는 폴더에 넣으십시오. –

+0

"Location"은 http : //httpd.apache를 의미합니다. org/docs/2.0/mod/core.html # location SetHandler 지시어와 구체적으로 결합 : http://httpd.apache.org/docs/2.0/mod/core.html#sethandler 그래서 실제 파일 (index.htm, index.php, 뭐든간에)가 아니라, "Handler"(pls_handler, 즉 mod_plsql, 내 구체적인 경우)로 포워딩합니다. – ObiWanKenobi

6

Apache 구성에 액세스 할 수 없다고 가정합니다. 그렇지 않으면, 가상 호스트가 최상의 옵션입니다. 당신은, 그러나, 이것은 htaccess로 파일에 넣을 수없고 트릭을해야하는 경우 :

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(.+)\.yourwebsite\.com$ 
RewriteRule ^/(.*)$ /path/to/your/subdomains/%1/$1 [L] 

그래서 http://foo.yourwebsite.com/bar에 요청 /path/to/your/subdomains/foo/bar

관련 문제