15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
01.11.2024

Configuración de Redirecciones con Nginx en VPS: Una Guía Completa de Configuración

Los redireccionamientos son un componente fundamental de cualquier infraestructura web bien gestionada. Ya sea que estés reestructurando tu sitio web, migrando a un nuevo dominio o enrutando temporalmente el tráfico durante el mantenimiento, los redireccionamientos configurados correctamente protegen tus clasificaciones de SEO, preservan la equidad de enlaces y garantizan que los visitantes siempre lleguen a la página correcta. Nginx — uno de los servidores web más potentes y ampliamente utilizados del mundo — hace que la implementación de redireccionamientos sea flexible y eficiente.

Esta guía completa te guía a través de todo lo que necesitas saber sobre la configuración de redireccionamientos HTTP usando Nginx en un entorno de VPS Hosting, desde entender los tipos de redireccionamiento hasta probar y verificar tu configuración en producción.

1. Entendiendo los redireccionamientos HTTP

Antes de tocar un solo archivo de configuración, es importante entender qué hacen realmente los redireccionamientos y por qué elegir el tipo correcto es importante — especialmente para SEO.

Un redireccionamiento HTTP es una respuesta del servidor que instruye al cliente (típicamente un navegador web o rastreador) a navegar a una URL diferente de la solicitada originalmente. El servidor comunica esta instrucción usando un código de estado HTTP 3xx, y el código específico que elijas tiene implicaciones significativas tanto para la experiencia del usuario como para el comportamiento del motor de búsqueda.

Los tipos de redireccionamiento más comunes

Tipo de redireccionamientoCódigo de estadoCaso de uso¿Pasa equidad de enlaces?
Redireccionamiento permanente301El recurso se ha movido permanentemente✅ Sí
Redireccionamiento temporal302El recurso no está disponible temporalmente❌ No
Redireccionamiento temporal (seguro para método)307Movimiento temporal, preserva el método HTTP❌ No
Redireccionamiento permanente (seguro para método)308Movimiento permanente, preserva el método HTTP✅ Sí

#### Redireccionamiento permanente 301

El redireccionamiento 301 es el tipo de redireccionamiento más crítico para SEO. Señala a los motores de búsqueda que un recurso se ha movido permanentemente a una nueva URL, transfiriendo la equidad de enlaces acumulada de la página original (también llamada “link juice”) al destino. Úsalo cuando renombres permanentemente URLs, consolides contenido duplicado o migres a un nuevo dominio.

#### Redireccionamiento temporal 302

Un redireccionamiento 302 le dice a navegadores y rastreadores que el movimiento es temporal y la URL original eventualmente será restaurada. Debido a que los motores de búsqueda interpretan esto como transitorio, no transfieren equidad de enlaces a la URL de destino. Úsalo para pruebas A/B, páginas de mantenimiento temporal o redireccionamientos promocionales a corto plazo.

#### Redireccionamiento temporal 307

El redireccionamiento 307 se comporta de manera similar a un 302 pero con una diferencia crítica: preserva explícitamente el método de solicitud HTTP original. Si un cliente envía una solicitud POST a una URL que devuelve un 307, el cliente debe repetir la solicitud POST a la nueva URL en lugar de cambiar por defecto a GET. Esto es importante para puntos finales de API y envíos de formularios.

#### Redireccionamiento permanente 308

El redireccionamiento 308 es la contraparte permanente de 307 — señala un movimiento permanente mientras también preserva el método de solicitud HTTP. Es menos comúnmente usado que 301 pero valioso en entornos con muchas APIs.

2. Requisitos previos: Accediendo a tu VPS vía SSH

Para configurar redireccionamientos de Nginx, necesitas acceso de línea de comandos a tu servidor. Si estás ejecutando un entorno VPS Hosting basado en Linux, esto significa conectarse vía SSH.

Paso 1: Abre tu terminal y conéctate

En Linux o macOS, abre tu terminal. En Windows, usa un cliente como PuTTY o la Terminal de Windows integrada con soporte OpenSSH.

ssh username@your_server_ip

Reemplaza username con tu usuario del sistema real (p. ej., root o un usuario habilitado para sudo) y your_server_ip con la dirección IP pública de tu VPS.

Ejemplo:

ssh admin@203.0.113.45

Una vez conectado, confirma que Nginx está instalado y ejecutándose:

sudo systemctl status nginx

Deberías ver una salida indicando que el servicio está activo (ejecutándose). Si Nginx aún no está instalado, puedes instalarlo con:

# On Ubuntu/Debian
sudo apt update && sudo apt install nginx -y

# On CentOS/RHEL/AlmaLinux
sudo dnf install nginx -y

3. Localizando y entendiendo los archivos de configuración de Nginx

Nginx utiliza una estructura de configuración jerárquica. Entender dónde viven los archivos es esencial antes de hacer cualquier cambio.

Rutas de configuración predeterminadas

RutaPropósito
/etc/nginx/nginx.confArchivo de configuración principal de Nginx
/etc/nginx/sites-available/Configuraciones de host virtual disponibles
/etc/nginx/sites-enabled/Configuraciones activas vinculadas simbólicamente
/etc/nginx/conf.d/Archivos de configuración adicionales (estilo CentOS/RHEL)

En sistemas Ubuntu/Debian, el enfoque recomendado es crear archivos de configuración individuales en /etc/nginx/sites-available/ y luego habilitarlos creando enlaces simbólicos en /etc/nginx/sites-enabled/.

En sistemas CentOS/RHEL/AlmaLinux, las configuraciones típicamente viven en /etc/nginx/conf.d/.

Abriendo un archivo de configuración

Para editar la configuración de un dominio específico:

sudo nano /etc/nginx/sites-available/example.com

Si el archivo aún no existe, este comando lo creará. También puedes usar vim o cualquier otro editor de texto que prefieras.

4. Configurando redireccionamientos en Nginx

Nginx maneja redireccionamientos principalmente a través de dos directivas: return y rewrite. La directiva return es más simple, rápida y recomendada para la mayoría de escenarios de redireccionamiento. La directiva rewrite ofrece más poder para redireccionamientos complejos basados en patrones.

Método 1: Usando la directiva return (Recomendado)

La directiva return detiene el procesamiento e inmediatamente devuelve el código de estado HTTP especificado y la URL al cliente. Es el enfoque más eficiente para redireccionamientos directos.

#### Configurando un redireccionamiento permanente 301 (URL única)

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

    location /old-page {
        return 301 https://example.com/new-page;
    }
}

En esta configuración, cualquier solicitud a http://example.com/old-page será redireccionada permanentemente a https://example.com/new-page. Los motores de búsqueda actualizarán sus índices para reflejar la nueva URL y transferirán la equidad de enlaces en consecuencia.

#### Configurando un redireccionamiento temporal 302

server {
    listen 80;
    server_name example.com;

    # Temporary redirect during maintenance
    location /promo-page {
        return 302 https://example.com/temporary-landing;
    }
}

Esta configuración redirige temporalmente a los visitantes de /promo-page a /temporary-landing sin afectar las señales de SEO en la URL original.

#### Redireccionando un dominio completo (sin WWW a WWW)

Un caso de uso muy común es forzar un dominio canónico — por ejemplo, redireccionando todo el tráfico de http://example.com a https://www.example.com:

server {
    listen 80;
    server_name example.com;
    return 301 https://www.example.com$request_uri;
}

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

    # SSL configuration here
    # ...
}

La variable $request_uri preserva la ruta original y la cadena de consulta, así que http://example.com/blog/post-1?ref=newsletter se redirige correctamente a https://www.example.com/blog/post-1?ref=newsletter.

#### Redireccionando HTTP a HTTPS (Forzar SSL)

Forzar HTTPS es una práctica recomendada de seguridad y una señal de clasificación confirmada por Google. Una vez que tengas un Certificado SSL instalado en tu servidor, configura el redireccionamiento de la siguiente manera:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

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

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # Your site configuration continues here
    root /var/www/example.com/html;
    index index.html index.php;
}

Esta configuración captura todo el tráfico HTTP en el puerto 80 e emite un redireccionamiento 301 al equivalente HTTPS, asegurando que todos los visitantes y rastreadores usen la versión segura de tu sitio.

#### Redireccionando un dominio antiguo completo a un nuevo dominio

Cuando migres tu sitio web a un dominio completamente nuevo, usa el siguiente patrón:

server {
    listen 80;
    listen 443 ssl;
    server_name old-domain.com www.old-domain.com;

    ssl_certificate /etc/letsencrypt/live/old-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/old-domain.com/privkey.pem;

    return 301 https://new-domain.com$request_uri;
}

Esto preserva la ruta completa de la URL durante la migración del dominio, que es crítico para mantener tus clasificaciones de SEO. Si necesitas registrar un nuevo dominio para tu proyecto, AlexHost ofrece servicios asequibles de Registro de dominios.

Método 2: Usando la directiva rewrite (Redireccionamientos basados en patrones)

La directiva rewrite usa expresiones regulares para coincidir y transformar URLs. Es más potente pero también más intensiva en recursos que return. Úsala cuando necesites redireccionamientos de múltiples patrones de URL con una sola regla.

#### Sintaxis básica de rewrite

rewrite regex replacement [flag];

Banderas:

  • last — Detiene el procesamiento de directivas rewrite actuales e inicia una nueva búsqueda de ubicación
  • break — Detiene el procesamiento de directivas de reescritura en el bloque actual
  • redirect — Devuelve un redireccionamiento temporal 302
  • permanent — Devuelve un redireccionamiento permanente 301

#### Redireccionando URLs con un patrón

Supongamos que estás reestructurando tu blog y necesitas redireccionamientos de todas las URLs de /blog/YYYY/MM/post-slug a /articles/post-slug:

server {
    listen 80;
    server_name example.com;

    rewrite ^/blog/[0-9]{4}/[0-9]{2}/(.*)$ /articles/$1 permanent;
}

Esta única regla maneja toda la reestructuración de URL del blog, capturando el slug del artículo e insertándolo en el nuevo patrón de URL.

#### Redireccionando múltiples URLs específicas

Para un pequeño número de cambios de URL específicos, usar múltiples directivas return en bloques location separados es más limpio y eficiente:

server {
    listen 80;
    server_name example.com;

    location = /about-us {
        return 301 /about;
    }

    location = /services/web-design {
        return 301 /services/web-development;
    }

    location = /contact-form {
        return 301 /contact;
    }
}

El modificador = en location realiza una coincidencia exacta, que es el tipo de coincidencia más rápido en Nginx.

Método 3: Redireccionando basado en cadenas de consulta

Nginx no coincide nativamente con cadenas de consulta en bloques location, pero puedes usar la variable $arg_ o directivas if para redireccionamientos basados en cadenas de consulta:

server {
    listen 80;
    server_name example.com;

    location /page {
        if ($arg_id = "123") {
            return 301 /new-page-123;
        }
        if ($arg_id = "456") {
            return 301 /new-page-456;
        }
    }
}

> Nota: Aunque las directivas if funcionan para casos simples, pueden causar comportamientos inesperados en configuraciones complejas. La comunidad de Nginx a menudo se refiere a esto como el problema “if is evil”. Úsalo con cuidado y prueba exhaustivamente.

5. Escenarios de redireccionamiento avanzados

Redireccionando un subdirectorio a otro dominio

server {
    listen 80;
    server_name example.com;

    location /shop/ {
        return 301 https://shop.example.com$request_uri;
    }
}

Removiendo barras diagonales finales

Las barras diagonales finales inconsistentes pueden crear problemas de contenido duplicado. Para canonicalizar URLs removiendo barras diagonales finales:

server {
    listen 80;
    server_name example.com;

    rewrite ^/(.*)/$ /$1 permanent;
}

Añadiendo barras diagonales finales a URLs de directorio

Inversamente, si tu CMS o aplicación requiere barras diagonales finales:

server {
    listen 80;
    server_name example.com;

    location ~ ^(/[^.]*[^/])$ {
        return 301 $1/;
    }
}

Redireccionamientos basados en geografía usando GeoIP

Para sitios web que sirven múltiples regiones, puedes redireccionamientos a usuarios basados en su ubicación geográfica usando ngx_http_geoip_module:

geoip_country /usr/share/GeoIP/GeoIP.dat;

server {
    listen 80;
    server_name example.com;

    if ($geoip_country_code = "DE") {
        return 302 https://de.example.com$request_uri;
    }

    if ($geoip_country_code = "FR") {
        return 302 https://fr.example.com$request_uri;
    }
}

6. Probando tu configuración de Nginx

Nunca apliques cambios a un servidor de producción sin probar primero. Un error de sintaxis en tu configuración de Nginx puede desconectar completamente tu sitio web.

Paso 1: Valida la sintaxis de la configuración

sudo nginx -t

Salida esperada para una configuración válida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si ves errores, Nginx reportará el archivo específico y el número de línea donde se detectó el problema, haciendo la depuración directa.

Paso 2: Recarga Nginx para aplicar cambios

Una vez que la prueba de configuración pase, recarga Nginx de manera elegante (sin descartar conexiones activas):

sudo systemctl reload nginx

Alternativamente, para un reinicio completo (que interrumpe brevemente las conexiones activas):

sudo systemctl restart nginx

Para la mayoría de cambios de redireccionamiento, reload es suficiente y preferido.

7. Verificando que tus redireccionamientos funcionen correctamente

Después de aplicar tu configuración, verifica que los redireccionamientos se comporten exactamente como se pretendía antes de considerar la tarea completa.

Método 1: Prueba en navegador

Abre tu navegador y navega a la URL antigua. Observa si eres redireccionado correctamente al nuevo destino. Para más detalle, abre Herramientas de desarrollador (F12), navega a la pestaña Red y recarga la página. Verás la cadena de redireccionamiento completa, incluyendo los códigos de estado devueltos en cada paso.

Método 2: Usando curl desde la línea de comandos

El comando curl es la forma más confiable de probar redireccionamientos sin que el almacenamiento en caché del navegador interfiera:

curl -I http://example.com/old-page

La bandera -I obtiene solo los encabezados de respuesta HTTP. Busca el encabezado Location y el código de estado en la respuesta:

HTTP/1.1 301 Moved Permanently
Server: nginx/1.24.0
Date: Mon, 01 Jan 2024 12:00:00 GMT
Content-Type: text/html
Location: https://example.com/new-page
Connection: keep-alive

Para seguir la cadena de redireccionamiento completa automáticamente:

curl -IL http://example.com/old-page

La bandera -L instruye a curl a seguir redireccionamientos, y combinada con -I, muestra los encabezados en cada paso de la cadena.

Método 3: Herramientas de verificación de redireccionamiento en línea

Varias herramientas gratuitas en línea pueden visualizar tus cadenas de redireccionamiento e identificar problemas como bucles de redireccionamiento o saltos de redireccionamiento excesivos:

  • Redirect Checker (redirect-checker.org)
  • httpstatus.io
  • Screaming Frog SEO Spider (aplicación de escritorio, gratis hasta 500 URLs)

Verificando bucles de redireccionamiento

Un bucle de redireccionamiento ocurre cuando la URL A se redirige a la URL B, que se redirige de vuelta a la URL A (o a través de una cadena más larga que eventualmente se vuelve a conectar). Esto causa que los navegadores muestren un error como *”ERR_TOO_MANY_REDIRECTS”*.

Para detectar bucles con curl:

curl -IL --max-redirs 10 http://example.com/old-page

Si curl alcanza el límite máximo de redireccionamiento, tienes un bucle. Revisa tu configuración cuidadosamente para asegurar que no existan rutas de redireccionamiento circular.

8. Errores comunes de redireccionamiento y cómo evitarlos

Error 1: Usar 302 cuando quieres decir 301

Este es el error de SEO más común con redireccionamientos. Si un cambio de URL es permanente, siempre usa 301. Usar 302 accidentalmente significa que los motores de búsqueda no transferirán equidad de enlaces y continuarán indexando la URL antigua.

Error 2: Cadenas de redireccionamiento

Evita encadenar redireccionamientos innecesariamente (p. ej., A → B → C → D). Cada salto adicional añade latencia y diluye el valor de SEO pasado a través de la cadena. Audita tus redireccionamientos regularmente y actualízalos para apuntar directamente al destino final.

Error 3: No preservar cadenas de consulta

Cuando redireccionas dominios o directorios completos, siempre incluye $request_uri o $query_string en tu destino de redireccionamiento para evitar eliminar parámetros de URL importantes.

Incorrecto:

return 301 https://new-domain.com;

Correcto:

return 301 https://new-domain.com$request_uri;

Error 4: Olvidar manejar tanto HTTP como HTTPS

Si tu sitio sirve tanto HTTP como HTTPS, asegúrate de que tus reglas de redireccionamiento cuenten con ambos protocolos, o podrías terminar con comportamiento inconsistente.

Error 5: No probar después de cambios

Siempre ejecuta sudo nginx -t antes de recargar, y siempre verifica redireccionamientos con curl después de aplicar cambios. Unos pocos segundos de prueba pueden prevenir horas de solución de problemas.

9. Redireccionamientos de Nginx vs. redireccionamientos de .htaccess

Si estás migrando desde un entorno de alojamiento basado en Apache a Nginx en un VPS, podrías estar acostumbrado a gestionar redireccionamientos vía archivos .htaccess. Es importante entender que Nginx no soporta archivos .htaccess. Toda la lógica de redireccionamiento debe colocarse directamente en archivos de configuración del bloque de servidor de Nginx.

Esto es en realidad una ventaja: Nginx no necesita leer archivos .htaccess en cada solicitud, lo que contribuye a su rendimiento superior comparado con Apache en muchos escenarios.

Si prefieres una experiencia de panel de control gestionado para tu VPS, AlexHost ofrece VPS con cPanel y una variedad de paneles de control VPS que proporcionan interfaces gráficas para gestionar redireccionamientos y otras configuraciones del servidor sin editar archivos de configuración directamente.

10. Mejores prácticas de SEO para redireccionamientos de Nginx

Los redireccionamientos configurados correctamente son un componente crítico del SEO técnico. Aquí están los principios clave a seguir:

Usa redireccionamientos 301 para cambios permanentes

Cualquier vez que cambies permanentemente una URL — ya sea renombrando una página, reestructurando tu arquitectura de sitio o migrando dominios — usa un redireccionamiento 301. Esto asegura que Google y otros motores de búsqueda actualicen sus índices y transfieran el poder de clasificación de la URL antigua a la nueva.

Minimiza saltos de redireccionamiento

Los rastreadores de Google siguen cadenas de redireccionamiento, pero cada salto consume presupuesto de rastreo y diluye ligeramente el PageRank. Mantén tus cadenas de redireccionamiento lo más cortas posible — idealmente un único salto de URL antigua a destino final.

Actualiza enlaces internos

Los redireccionamientos son una red de seguridad, no un sustituto para un enlace interno limpio. Después de implementar redireccionam

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar