Apache Virtual Hosts e Mod_rewrite conflitos
-
18-09-2019 - |
Pergunta
Eu vasculhei a rede e, assim, não consigo contornar ou através desse problema.
Temos um monte de subdomínios e alguns servidores dedicados. Um servidor cumpre o dever duplo como rastreamento de problemas e página de aterrissagem. O problema é que a página de destino do curinga não o leva à página de host virtual correta às vezes. Eu tenho olhado para curingas, mas eles parecem particularmente amplos.
Nosso cenário é o seguinte:
-www.askia.com é o principal local de pouso. Um subdomínio inexistente (curinga) deve sempre pousar aqui.
-dev.askia.com é o site de suporte técnico e problemas. Possui alguns mod_rewrites para https. Demorei um pouco, mas consegui funcionar e prefiro não quebrá -lo.
-www.askia.fr é o nosso site francês. Em vez de levá -lo a www.askia.com Leva você ao dev.askia.com.
-www.askia.co.uk deve levá -lo para www.askia.com Mas vai para dev.askia.com
Não tenho muita certeza de onde deveria estar tentando corrigir a solução. Devo fazer algo no CNAME. No arquivo de configuração do VirtualHosts ou no arquivo mod_rewrite.
Solução
Experimente estas regras:
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]
A primeira regra redireciona todos os pedidos para um host que começa com dev.
mas não dev.askia.com
para www.askia.com
. E a segunda regra de redirecionar solicitações para um host que não www.askia.com
e dev.askia.com
para www.askia.com
. Portanto, todo pedido deve ir para dev.askia.com
ou www.askia.com
.
Outras dicas
Ao usar hosts virtuais no Apache, o primeiro hospedado listado sempre será o padrão para não correspondências.
#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