2009-04-28 8 views
2

나는 인터넷을 수색 해왔고 그래서이 문제를 해결할 수 없다.아파치 가상 호스트와 mod_rewrite 충돌

Google에는 여러 하위 도메인과 전용 서버가 있습니다. 한 서버는 이슈 추적 및 방문 페이지로 이중 3 배 업무를 수행합니다. 문제는 와일드 카드 방문 페이지가 올바른 가상 호스트 페이지로 이동하지 않는 경우입니다. 나는 와일드 카드를보고 있었지만 그들은 특히 광범위하게 보입니다. www.askia.com 주요 상륙 사이트입니다 -

:

우리의 시나리오는 다음입니다. 존재하지 않는 (와일드 카드) 하위 도메인은 항상 여기에 있어야합니다.
- dev.askia.com은 기술 지원 및 문제 사이트입니다. https에 mod_rewrites가 있습니다. 그것은 나에게 어느 정도 걸렸다. 그러나 나는 일하도록했다.
- www.askia.fr은 프랑스 사이트입니다. www.askia.com으로 이동하는 대신 dev.askia.com으로 이동합니다.
- www.askia.co.uk는 당신을해야 www.askia.com하지만 내가하려고 할 위치를 완전히 확실하지 않다 dev.askia.com

로 이동 솔루션을 수정하십시오. CNAME에서해야 할 일. virtualhosts 설정 파일 또는 mod_rewrite 파일.

+0

투표가 serverfault.com에 속한다 - 그것은 회색 영역에있어,하지만 난 그게 시스템 구성 및 프로그래밍에 비해 아파치 설정 기능과 더 많은 관계를 가지고있다 생각하고 있어요 ... –

답변

1

는이 규칙을 시도해보십시오

RewriteCond %{HTTP_HOST} ^dev\. 
RewriteCond %{HTTP_HOST} !^dev\.askia\.com$ 
RewriteRule^http://dev.askia.com%{REQUEST_URI} [L,R=301] 

RewriteCond %{HTTP_HOST} !^www\.askia\.com$ 
RewriteCond %{HTTP_HOST} !^dev\.askia\.com$ 
RewriteRule^http://www.askia.com%{REQUEST_URI} [L,R=301] 

첫 번째 규칙은 dev.로 시작하는 호스트에 모든 요청을 리디렉션하지만 dev.askia.com-www.askia.com. 그리고 두 번째 규칙은 www.askia.comdev.askia.com에서 www.askia.com 이외의 호스트로 요청을 리디렉션합니다. 따라서 모든 요청은 dev.askia.com 또는 www.askia.com으로 이동해야합니다.

+0

덕분에 나는이주지 샷. 다른 하위 도메인을 추가하면 rewreitecond에 추가해야합니다. –

+0

예. 내 예제는'dev. ... '과'www \. ...'만 허용한다. 다른 시작과 함께 호스트 이름은 'www.askia.com'으로 리디렉션됩니다. – Gumbo

1

Apache에서 가상 호스트를 사용할 때 처음 나열된 호스트는 항상 일치하지 않는 경우 기본값으로 사용됩니다. 가까운에 대한

#default vhost 
# any non-matches will land here 

<VirtualHost _default_:80> 
ServerName www.askia.com:80 
DocumentRoot /path/to/site 

ErrorLog /path/ti/sites/logs/error_log 

</VirtualHost> 


# vhost #2 

<VirtualHost _dev_Site_:443> 
ServerName dev.askia.com:443 
DocumentRoot /path/to/dev/site 

ErrorLog /path/to/dev/sites/logs/error_log 

#ssl details 
SSLEngine on 
SSLCipherSuite HIGH:MEDIUM 
SSLCertificateFile /location/securti.crt 
SSLCertificateKeyFile /location/securti.key 


#any rewrite rules to apply only to this (default) domain 
# force SSL for instance.. 
RewriteRule .* - [F] 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule (.*) https://dev.askia.com/ 
</VirtualHost> 

#etc, etc 
+0

그래서이 주문을 어떻게 변경합니까? apache2.conf에있는 유일한 것은 사이트가 활성화 된 디렉토리에 대한 참조입니다. 실용적이지 않은 기본 사이트를 언로드하는 경우를 제외하고는이 순서를 변경하는 방법을 찾을 수 없습니다. –

+0

joe - 도메인이 처음이라면 무엇이든 잡을 것입니다. 그것을 바꾸려면 다른 것을 먼저 나열하십시오. 나는 원래의 게시물을 편집하여 www를 기본으로 만들고 dev를 강제로 만드는 샘플 가상 호스트 구성을 포함합니다. SSL 되려고. – Eddie