Redirecionamento IP do Apache2 em conflito com o redirecionamento de subdomínio

Redirecionamento IP do Apache2 em conflito com o redirecionamento de subdomínio

portanto, visitar meu site example.comfunciona conforme o esperado. Configurei com sucesso um redirecionamento para que abc.example.comele 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/abcum comportamento que não é o desejado. O IP bruto no navegador deve me deixar emexample.com

Aqui está o example.com.confarquivo:

<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.comseja veiculado em vez de abc.example.com?

Responder1

Isso ocorre porque um dos seus vhosts está agindo como padrão. Quando o ServerNamenível do servidor at (ou seja, não em um VirtualHostbloco) 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).

informação relacionada