Tutorial: Redirección de Acceso por IP al Dominio Principal en Apache (Debian)

Este tutorial explica cómo configurar un Virtual Host por defecto en Apache (en concreto en un servidor Debian Trixie) para asegurar que el acceso directo a la IP del servidor redirija automáticamente al dominio web principal, evitando que se muestre accidentalmente un subdominio o un sitio incorrecto.

1. El Problema (Virtual Host por Defecto)

Cuando se accede al servidor web utilizando solo la dirección IP (http://XXX.XXX.XXX.XXX), Apache no recibe un nombre de dominio (Host Header) coincidente. En esta situación, Apache carga el primer Virtual Host que encuentra configurado en su lista (ordenado alfabéticamente).

Si ese primer Virtual Host es un subdominio, ya sea de una aplicación, como un ERP o cualquier otra cosa, será ese subdominio el que se muestre por defecto al acceder por IP.

2. La Solución: VHost «Catch-All» con Redirección

La solución consiste en crear un Virtual Host con el nombre alfabéticamente más bajo (000-default.conf) y configurarlo para que capture todas las peticiones no coincidentes y aplique una redirección permanente (301) al dominio principal.

Paso 1: Crear o Editar el Archivo de Configuración

Accede al directorio de Virtual Hosts disponibles y edita o crea el archivo que actuará como predeterminado:

sudo nano /etc/apache2/sites-available/000-default.conf

Paso 2: Contenido del Virtual Host de Redirección

Copia el siguiente código, reemplazando los marcadores de posición ([TU_IP_FIJA], tu-dominio-principal.com, subdominio.tu-dominio-principal.com) por los valores correctos de tu servidor.

<VirtualHost *:80>
    # -----------------------------------------------------------
    # VHost de Control: Captura peticiones por IP o dominios desconocidos.
    # -----------------------------------------------------------
    
    # Reemplaza [TU_IP_FIJA] con la IP real del servidor
    ServerName [TU_IP_FIJA] 
    ServerAlias *
    # Habilita el motor de reescritura para la redirección
    RewriteEngine On
    
    # --- Reglas de Redirección (Comprobación de Hosts) ---
    
    # Condición 1: Si el Host NO es el dominio principal
    RewriteCond %{HTTP_HOST} !^tu-dominio-principal\.com$ [NC]
    # Condición 2: Si el Host NO es el subdominio de la tienda (u otra aplicación)
    RewriteCond %{HTTP_HOST} !^subdominio\.tu-dominio-principal\.com$ [NC]
    
    # Si las condiciones se cumplen (es un acceso por IP o un Host no deseado),
    # redirige permanentemente (código 301) a la URL principal.
    RewriteRule ^/(.*)$ [http://tu-dominio-principal.com/$1](http://tu-dominio-principal.com/$1) [R=301,L]
    
    # Configuración estándar de logs
    ErrorLog ${APACHE_LOG_DIR}/default_error.log
    CustomLog ${APACHE_LOG_DIR}/default_access.log combined
</VirtualHost>

Paso 3: Aplicar los Cambios

Para que esta configuración funcione, debes asegurarte de que el módulo mod_rewrite esté activo y que el nuevo Virtual Host esté habilitado, seguido de un reinicio de Apache.

  1. Habilitar el Módulo de Reescritura:sudo a2enmod rewrite
  2. Habilitar el VHost por Defecto:sudo a2ensite 000-default.conf
  3. Reiniciar el Servidor Apache:sudo systemctl restart apache2

Resultado

Después de completar estos pasos, cualquier intento de acceder a tu servidor directamente a través de la dirección IP (http://XXX.XXX.XXX.XXX) será interceptado por 000-default.conf y redirigido automáticamente a http://tu-dominio-principal.com.

En este Podcast se explica este problema:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *