Introducción
La redirección HTTP es una forma de señalar un dominio o una dirección hacia otro. Hay varios tipos diferentes de redireccionamientos, cada uno de los cuales significa algo diferente para el navegador del cliente. Los dos tipos más comunes son las redirecciones temporales y las redirecciones permanentes.
Las redirecciones temporales (código de estado de respuesta 302 Encontrado) son útiles si una URL necesita ser servida temporalmente desde una ubicación diferente. Por ejemplo, si estás realizando mantenimiento en el sitio, es posible que desees usar una redirección temporal desde tu dominio a una página de explicación para informar a tus visitantes que volverás en breve.
Las redirecciones permanentes (código de estado de respuesta 301 Movido permanentemente), por otro lado, informan al navegador que debe olvidar completamente la dirección antigua y no intentar acceder a ella nunca más. Estas son útiles cuando tu contenido se ha movido permanentemente a una nueva ubicación, como cuando cambias de nombre de dominio.
Esta guía cubrirá una explicación más detallada de cómo implementar cada tipo de redireccionamiento en Nginx y pasará por algunos ejemplos para casos de uso específicos.
Prerrequisitos
Para seguir este tutorial, necesitarás:
- A server with Nginx installed and set up to serve your website(s). You can find some examples and instructions on the tutorials for Ubuntu 22.04, Debian, or CentOS.
Solución a simple vista
En Nginx, puedes lograr la mayoría de las redirecciones con la directiva integrada rewrite
. Esta directiva está disponible de forma predeterminada en una instalación fresca de Nginx y se puede utilizar para crear redirecciones tanto temporales como permanentes. En su forma más simple, toma al menos dos argumentos: la antigua URL y la nueva URL.
Puedes implementar una redirección temporal con las siguientes líneas en la configuración de tu servidor:
Esta redirección instruye al navegador a dirigir todas las solicitudes de www.dominio1.com
a www.dominio2.com
. Sin embargo, esta solución solo funciona para una sola página, no para todo el sitio. Para redirigir más que una sola página, puedes usar la directiva rewrite
con expresiones regulares para especificar directorios enteros en lugar de solo archivos individuales.
redirect
coincide con patrones de expresiones regulares entre paréntesis. Luego, hace referencia al texto coincidente en el destino de la redirección usando la expresión $1
, donde 1
es el primer grupo de texto coincidente. En ejemplos más complejos, los grupos coincidentes posteriores se les asignan números secuenciales.
Por ejemplo, si quisieras redirigir temporalmente cada página dentro de www.dominio1.com
a www.dominio2.com
, podrías usar lo siguiente:
Por defecto, la directiva rewrite
establece una redirección temporal. Si deseas crear una redirección permanente, puedes hacerlo reemplazando redirect
con permanent
al final de la directiva, así:
Vamos a ver algunos ejemplos específicos.
Ejemplo 1 — Cambiando a un Dominio Diferente
Si has establecido una presencia web y deseas cambiar tu dominio por una nueva dirección, lo mejor es no abandonar simplemente tu antiguo dominio. Los marcadores de tu sitio y los enlaces a tu sitio ubicados en otras páginas en Internet se romperán si tu contenido desaparece sin instrucciones al navegador sobre cómo encontrar su nueva ubicación. Cambiar de dominio sin redireccionar hará que tu sitio pierda tráfico de visitantes anteriores y enlaces más antiguos.
En este ejemplo, configuraremos una redirección desde el antiguo dominio llamado domain1.com
hacia el nuevo llamado domain2.com
. Utilizaremos redirecciones permanentes aquí porque el antiguo dominio será obsoleto y todo el tráfico debería dirigirse al nuevo dominio a partir de ahora.
Supongamos que tienes tu sitio web configurado para ser servido desde un único dominio llamado domain1.com
ya configurado en Nginx de la siguiente manera:
También asumiremos que ya estás sirviendo la futura versión de tu sitio web en domain2.com
:
Vamos a cambiar el archivo de configuración del bloque del servidor domain1.com
para añadir una redirección permanente a domain2.com
:
Hemos añadido la mencionada redirección utilizando una directiva rewrite
. La expresión regular ^/(.*)$
coincide con todo después de la barra /
en la URL. Por ejemplo, http://domain1.com/index.html
será redirigido a http://domain2.com/index.html
. Para lograr la redirección permanente, simplemente añadimos permanent
después de la directiva rewrite
.
Nota: Recuerda probar tu configuración utilizando nginx -t
y luego reiniciar Nginx después de realizar tus cambios.
Ejemplo 2 — Crear una Experiencia Persistente A Pesar de los Cambios en el Nombre de la Página
A veces, es necesario cambiar los nombres de páginas individuales que ya han sido publicadas y han recibido tráfico en tu sitio web. Cambiar solo el nombre causaría un error 404 No Encontrado para los visitantes que intentan acceder a la URL original, pero puedes evitar esto utilizando una redirección. Esto asegura que las personas que hayan marcado tus páginas antiguas o las hayan encontrado a través de enlaces desactualizados en los motores de búsqueda aún llegarán a la página correcta.
Supongamos que tu sitio web tenía dos páginas separadas para productos y servicios llamadas products.html
y services.html
respectivamente. Ahora, has decidido reemplazar esas dos páginas con una única página de ofertas llamada offers.html
en su lugar. Configuraremos una redirección simple para products.html
y services.html
hacia offers.html
.
Suponemos que tu sitio web está configurado de la siguiente manera:
Configurar las redirecciones es tan simple como usar dos directivas de redirección.
La directiva rewrite
acepta la dirección original que debe ser redirigida así como la dirección de destino de una nueva página. Dado que el cambio aquí no es temporal, también usamos permanent
en la directiva. Puedes usar tantas redirecciones como desees para asegurarte de que tus visitantes no vean errores 404 No Encontrado innecesarios al mover el contenido del sitio.
Conclusión
Ahora tienes el conocimiento para redirigir solicitudes a nuevas ubicaciones. Asegúrate de usar el tipo de redirección correcto, ya que un uso incorrecto de las redirecciones temporales puede afectar negativamente tu ranking en los motores de búsqueda.
Existen múltiples otros usos de las redirecciones HTTP, incluyendo forzar conexiones seguras SSL (es decir, utilizando https
en lugar de http
) y asegurarse de que todos los visitantes terminen únicamente en la dirección con el prefijo www.
del sitio web.
Usar redirecciones correctamente te permitirá aprovechar tu presencia web actual mientras te da la capacidad de modificar la estructura de tu sitio según sea necesario. Si deseas aprender más sobre las formas en que puedes redirigir a tus visitantes, Nginx tiene una excelente documentación sobre el tema en las secciones del módulo de reescritura de la documentación oficial y publicación oficial en el blog sobre cómo crear redirecciones.