portanto, visitar meu site example.com
funciona conforme o esperado. Configurei com sucesso um redirecionamento para que abc.example.com
ele redirecione para example.com/abc
.
O arquivo de configuração fica assim abc.example.com.conf
:
<VirtualHost *:80>
ServerName abc.example.com
RedirectPermanent / https://example.com/abc
</VirtualHost>
Meu problema:
Ao visitar meu site digitando o endereço IP bruto no navegador, também serei redirecionado para example.com/abc
um comportamento que não é o desejado. O IP bruto no navegador deve me deixar emexample.com
Aqui está o example.com.conf
arquivo:
<VirtualHost *:80>
ServerName example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
O que preciso alterar para que, quando eu digitar, meu endereço IP example.com
seja veiculado em vez de abc.example.com
?
Responder1
Isso ocorre porque um dos seus vhosts está agindo como padrão. Quando o ServerName
nível do servidor at (ou seja, não em um VirtualHost
bloco) corresponder a um dentro de a VirtualHost
, esse será o padrão. Se nenhum estiver definido, normalmente será o primeiro vhost.
Supondo que você esteja usando uma configuração totalmente vhost, a resposta é definir ServerName example.com
(e o correspondente Listen
) fora do bloco vhost.
Referência:https://httpd.apache.org/docs/2.4/vhosts/name-based.html
O host principal vai embora
Qualquer solicitação que não corresponda a uma existente será tratada pela configuração global do servidor, independentemente do nome do host ou ServerName.
Quando você adiciona um host virtual baseado em nome a um servidor existente e os argumentos do host virtual correspondem a combinações de IP e porta preexistentes, as solicitações agora serão tratadas por um host virtual explícito. Nesse caso, geralmente é aconselhável criar um host virtual padrão com um ServerName correspondente ao do servidor base. Novos domínios na mesma interface e porta, mas que exigem configurações separadas, podem então ser adicionados como hosts virtuais subsequentes (não padrão).