Cómo redirigir www a non-www con Nginx

Publicado 27 de agosto de 2024

Configuración de Nginx para redirigir www a non-www

Los propietarios de sitios web suelen usar una única versión de su dominio para mejorar el SEO y la experiencia del usuario. Redirigir la versión www de un dominio a la versión non-www (o viceversa) es común. Para los usuarios de Nginx, configurar esta redirección requiere una configuración específica. Este artículo explica cómo redirigir www a non-www usando Nginx, ayudándote a mantener una estructura de dominio consistente para tu sitio web.

Configuración de Nginx para la redirección de www a non-www

Creación de un bloque de servidor para la redirección

Para configurar un bloque de servidor para la redirección de www a non-www:

  1. Crea un nuevo archivo de configuración:

    sudo nano /etc/nginx/sites-available/example.com
  2. Añade este bloque de servidor:

    server {
       listen 80;
       server_name www.example.com example.com;
    
       # Otras configuraciones del servidor van aquí
    }
  3. Usa la directiva server_name para especificar tanto la versión www como la non-www de tu dominio.

  4. Guarda el archivo y sal del editor de texto.

  5. Crea un enlace simbólico para habilitar el sitio:

    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  6. Elimina la configuración por defecto de Nginx:

    sudo rm /etc/nginx/sites-enabled/default

Esta configuración forma la base para implementar la redirección de www a non-www en Nginx.

Implementación de la redirección 301 en Nginx

Escritura de la regla de redirección

Para redirigir www a non-www usando Nginx, utiliza la directiva return con un código de estado 301. Esto indica una redirección permanente. Añade esta regla a tu bloque de servidor:

server {
    listen 80;
    server_name www.example.com example.com;
    if ($host = www.example.com) {
        return 301 $scheme://example.com$request_uri;
    }
    # Otras configuraciones del bloque de servidor
}

Esta regla verifica si el host solicitado es la versión www de tu dominio. Si lo es, redirige a la versión non-www, manteniendo el esquema original (http o https) y cualquier parámetro de URL.

Prueba de la configuración de Nginx

Después de escribir la regla de redirección, prueba tu configuración de Nginx para detectar errores:

  1. Ejecuta este comando:

    sudo nginx -t
  2. Si no hay errores, verás un mensaje indicando que la prueba de configuración fue exitosa.

  3. Si hay errores, revisa tu archivo de configuración y corrige cualquier problema.

Una vez que la prueba de configuración pase, recarga Nginx para aplicar los cambios:

sudo systemctl reload nginx

Este comando recarga Nginx sin detener las conexiones activas. Tu redirección de www a non-www debería funcionar ahora. Pruébala visitando tu dominio www en un navegador web para confirmar que redirige a la versión non-www.

Consideraciones adicionales para la redirección

Manejo de conexiones HTTPS

Para manejar conexiones HTTPS, configura certificados SSL y actualiza tu bloque de servidor Nginx:

  1. Obtén un certificado SSL para tu dominio.

  2. Instala el certificado SSL en tu servidor.

  3. Actualiza tu bloque de servidor Nginx para soportar HTTPS:

server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com example.com;

    ssl_certificate /ruta/a/tu/certificado.crt;
    ssl_certificate_key /ruta/a/tu/certificado.key;

    if ($host = www.example.com) {
        return 301 https://example.com$request_uri;
    }

    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }

    # Otras configuraciones de SSL y servidor
}

Esta configuración redirige el tráfico HTTP y HTTPS de www a non-www, y usa HTTPS para todas las conexiones.

Configuración DNS para dominios www y non-www

Para configurar DNS para dominios www y non-www:

  1. Crea un registro A para tu dominio non-www (example.com) apuntando a la dirección IP de tu servidor.

  2. Configura un registro CNAME para el subdominio www (www.example.com) apuntando a tu dominio non-www.

Ejemplo de registros DNS:

example.com.     A     123.45.67.89
www.example.com. CNAME example.com.

Después de hacer cambios en DNS, permite tiempo para la propagación. Esto puede tomar hasta 48 horas, pero a menudo ocurre en unas pocas horas. Usa herramientas de búsqueda DNS en línea para verificar el estado de propagación de tu dominio.

Al manejar conexiones HTTPS y configurar DNS, creas un sistema de redirección seguro para tus dominios www y non-www.

Solución de problemas comunes de redirección

Manejo de bucles de redirección

Los bucles de redirección ocurren cuando las redirecciones llevan de vuelta a la URL original, creando un ciclo. Para encontrar y corregir redirecciones circulares:

  1. Usa comprobadores de redirección en línea o herramientas de desarrollador del navegador para detectar bucles.

  2. Revisa tus archivos de configuración de Nginx en busca de reglas de redirección conflictivas.

  3. Busca redirecciones en tu sistema de gestión de contenidos o archivos .htaccess.

Para encontrar problemas de redirección en los registros del servidor:

  1. Accede a los registros de error de Nginx:

    sudo tail -f /var/log/nginx/error.log
  2. Busca entradas de redirección repetidas o mensajes de error.

  3. Utiliza herramientas de análisis de registros para encontrar patrones en el comportamiento de redirección.

Optimización de la redirección para motores de búsqueda

Para ayudar a los motores de búsqueda a entender tus redirecciones:

  1. Usa redirecciones 301 (permanentes) para www a non-www. Verifica esto en tu configuración de Nginx:

    return 301 $scheme://example.com$request_uri;
  2. Actualiza tu mapa del sitio XML:

    • Elimina las URLs www
    • Añade las URLs non-www
    • Envía el mapa del sitio actualizado a los motores de búsqueda
  3. Cambia tu archivo robots.txt:

    • Usa la versión non-www en la directiva Sitemap
    • Ejemplo:
      Sitemap: https://example.com/sitemap.xml
  4. Usa Google Search Console para:

    • Establecer tu versión de dominio preferida
    • Verificar errores de rastreo relacionados con redirecciones

Al corregir bucles de redirección y optimizar para motores de búsqueda, puedes mejorar el rendimiento de tu sitio web y su visibilidad en las búsquedas.