La redirección de IP de Apache2 entra en conflicto con la redirección de subdominio

La redirección de IP de Apache2 entra en conflicto con la redirección de subdominio

por lo que visitar mi sitio web example.comfunciona según lo previsto. Configuré exitosamente una redirección para que abc.example.comredirija a example.com/abc.

El archivo de configuración se ve así abc.example.com.conf:

<VirtualHost *:80>
    ServerName abc.example.com
    RedirectPermanent / https://example.com/abc
</VirtualHost>

Mi problema:

Cuando visito mi sitio web y escribo la dirección IP sin formato en el navegador, también seré redirigido a example.com/abcun comportamiento que no es el deseado. La IP sin formato en el navegador debería dejarme enexample.com

Aquí está el example.com.confarchivo:

<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>

¿Qué necesito cambiar para que cuando escriba mi dirección IP example.comse proporcione en lugar de abc.example.com?

Respuesta1

Esto se debe a que uno de sus vhosts actúa como predeterminado. Cuando el ServerNamenivel del servidor (es decir, no en un VirtualHostbloque) coincida con uno dentro de a VirtualHost, ese será el valor predeterminado. Si no se establece ninguno, normalmente será el primer host virtual.

Suponiendo que está utilizando una configuración exclusivamente de vhost, la respuesta es configurar ServerName example.com(y el correspondiente Listen) fuera del bloque de vhost.

Referencia:https://httpd.apache.org/docs/2.4/vhosts/name-based.html

El anfitrión principal se va

Cualquier solicitud que no coincida con una existente es manejada por la configuración global del servidor, independientemente del nombre de host o del nombre del servidor.

Cuando agrega un host virtual basado en nombre a un servidor existente y los argumentos del host virtual coinciden con combinaciones de puerto e IP preexistentes, las solicitudes ahora serán manejadas por un host virtual explícito. En este caso, suele ser aconsejable crear un host virtual predeterminado con un nombre de servidor que coincida con el del servidor base. Luego se pueden agregar nuevos dominios en la misma interfaz y puerto, pero que requieren configuraciones separadas, como hosts virtuales posteriores (no predeterminados).

información relacionada