Apache Virtual Hosts 및 Mod_rewrite 충돌
-
18-09-2019 - |
문제
나는 그물을 수색하고 있었고,이 문제를 해결할 수 없다.
우리는 많은 하위 도메인과 전용 서버가 있습니다. 하나의 서버는 문제 추적 및 랜딩 페이지로 이중 열차 의무를 수행합니다. 문제는 와일드 카드 방문 페이지가 때때로 올바른 가상 호스트 페이지로 이동하지 않는다는 것입니다. 나는 와일드 카드를보고 있었지만 특히 넓어 보입니다.
우리의 시나리오는 다음과 같습니다.
-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 파일에서.
해결책
이 규칙을 시도하십시오.
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.com
그리고 dev.askia.com
에게 www.askia.com
. 따라서 모든 요청은 가야합니다 dev.askia.com
또는 www.askia.com
.
다른 팁
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