Cómo crear redirecciones temporales y permanentes con Nginx

Introducción

La redirección HTTP es una forma de apuntar un dominio o dirección a otro. Existen distintos tipos de redirecciones, cada una de las 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 publicada temporalmente desde una ubicación diferente. Por ejemplo, si está realizando tareas de mantenimiento del sitio, puede utilizar una redirección temporal desde su dominio a una página de explicación para informar a sus visitantes que volverá pronto.

Por otro lado, las redirecciones permanentes (código de estado de respuesta 301 Moved Permanently ) informan al navegador de que debe olvidar por completo la dirección anterior y no intentar acceder a ella nunca más. Son útiles cuando el contenido se ha movido de forma permanente a una nueva ubicación, como cuando se cambian los nombres de dominio.

Esta guía cubrirá una explicación más detallada de cómo implementar cada tipo de redirección en Nginx y revisará algunos ejemplos para casos de uso específicos.

Prerrequisitos

Para seguir este tutorial, necesitarás:

  • Un servidor con Nginx instalado y configurado para servir a sus sitios web. Puede encontrar algunos ejemplos e instrucciones en los tutoriales para Ubuntu 22.04 , Debian o CentOS .

Solución de un vistazo

En Nginx, puedes realizar la mayoría de las redirecciones con la directiva incorporada rewrite. Esta directiva está disponible de forma predeterminada en una nueva instalación de Nginx y se puede utilizar para crear redirecciones tanto temporales como permanentes. En su forma más simple, acepta al menos dos argumentos: la URL anterior y la URL nueva.

Puede implementar una redirección temporal con las siguientes líneas en la configuración de su servidor:

Redirección temporal con reescritura

server {    . . .    server_name www.domain1.com;    rewrite ^/$ http://www.domain2.com redirect;    . . .}

Esta redirección indica al navegador que dirija todas las solicitudes a www.domain1.com. www.domain2.comSin embargo, esta solución solo funciona para una sola página, no para todo el sitio. Para redirigir más de una sola página, puede utilizar la rewritedirectiva con expresiones regulares para especificar directorios completos en lugar de solo archivos individuales.

redirectcoincide con los patrones de expresión regular entre paréntesis. Luego, hace referencia al texto coincidente en el destino de redirección mediante $1expresión, donde 1es el primer grupo de texto coincidente. En ejemplos más complejos, a los grupos coincidentes posteriores se les asignan números de manera secuencial.

Por ejemplo, si quisieras redirigir temporalmente todas las páginas dentro www.domain1.comde www.domain2.com, podrías usar lo siguiente:

Redirección temporal con reescritura

server {    . . .    server_name www.domain1.com;    rewrite ^/(.*)$ http://www.domain2.com/$1 redirect;    . . .}server {    . . .    server_name www.domain2.com;    . . .}

De forma predeterminada, la rewritedirectiva establece una redirección temporal. Si desea crear una redirección permanente, puede hacerlo reemplazando redirectcon permanental final de la directiva, de la siguiente manera:

Redirecciones permanentes

rewrite ^/$ http://www.domain2.com permanent;rewrite ^/(.*)$ http://www.domain2.com/$1 permanent;

Pasemos a algunos ejemplos específicos.

Ejemplo 1: Mudarse a un dominio diferente

Si ha establecido una presencia en la web y desea cambiar su dominio a una nueva dirección, es mejor no abandonar simplemente su antiguo dominio. Los marcadores de su sitio y los enlaces a su sitio ubicados en otras páginas de Internet dejarán de funcionar si su contenido desaparece sin instrucciones al navegador sobre cómo encontrar su nueva ubicación. Cambiar de dominio sin redireccionar hará que su sitio pierda tráfico de visitantes anteriores y enlaces antiguos.

En este ejemplo, configuraremos una redirección desde el dominio antiguo llamado domain1.comal nuevo llamado domain2.com. Aquí utilizaremos redirecciones permanentes porque el dominio antiguo quedará obsoleto y todo el tráfico debería dirigirse al nuevo dominio a partir de ahora.

Supongamos que tiene su sitio web configurado para ser atendido desde un único dominio llamado domain1.comya configurado en Nginx de la siguiente manera:

/etc/nginx/sitios-disponibles/dominio1.com

server {    . . .    server_name domain1.com;    . . .}

También asumiremos que ya está sirviendo su futura versión del sitio web en domain2.com:

/etc/nginx/sitios-disponibles/dominio2.com

server {    . . .    server_name domain2.com;    . . .}

Cambiemos el domain1.comarchivo de configuración del bloque del servidor para agregar una redirección permanente a domain2.com:

/etc/nginx/sitios-disponibles/dominio1.com

server {    . . .    server_name domain1.com;    rewrite ^/(.*)$ http://domain2.com/$1 permanent;    . . .}

Hemos añadido la redirección antes mencionada mediante una rewritedirectiva. La ^/(.*)$expresión regular coincide con todo lo que aparece después de /en la URL. Por ejemplo, se redirigirá a . Para lograr la redirección permanente, simplemente añadimos después de la directiva.http://domain1.com/index.htmlhttp://domain2.com/index.htmlpermanentrewrite

Nota: Recuerde probar su configuración usando nginx -ty luego reiniciar Nginx después de realizar los cambios.

Ejemplo 2: Creación de una experiencia persistente a pesar de los cambios de nombre de una sola página

A veces, es necesario cambiar los nombres de páginas individuales que ya se han publicado y que han recibido tráfico en su sitio. Cambiar el nombre por sí solo provocaría un error 404 Not Found para los visitantes que intentan acceder a la URL original, pero puede evitarlo utilizando una redirección. Esto garantiza que las personas que hayan marcado sus páginas antiguas como favoritas o las hayan encontrado a través de enlaces obsoletos en los motores de búsqueda seguirán llegando a la página correcta.

Supongamos que su sitio web tiene dos páginas independientes para productos y servicios, llamadas products.htmly services.htmlrespectivamente. Ahora, ha decidido reemplazar esas dos páginas por una única página de ofertas llamada offers.html. Configuraremos una redirección simple para products.htmly services.htmla offers.html.

Suponemos que tiene su sitio web configurado de la siguiente manera:

Configuración del bloque del servidor original

server {    . . .    server_name example.com www.example.com;    . . .}

Configurar las redirecciones es tan simple como usar dos directivas de redireccionamiento.

Redirecciones añadidas a la configuración original

server {    . . .    server_name example.com www.example.com;        rewrite ^/products.html$ /offer.html permanent;    rewrite ^/services.html$ /offer.html permanent;    . . .}

La rewritedirectiva acepta la dirección original a la que se debe redirigir, así como la dirección de destino de una nueva página. Dado que el cambio aquí no es temporal, permanenttambién lo usamos en la directiva. Puede usar tantas redirecciones como desee para asegurarse de que sus visitantes no vean errores innecesarios de tipo 404 No encontrado al mover el contenido del sitio.

Conclusión

Ahora tienes los conocimientos necesarios para redirigir las solicitudes a nuevas ubicaciones. Asegúrate de utilizar el tipo de redirección correcto, ya que un uso inadecuado de las redirecciones temporales puede perjudicar tu clasificación en las búsquedas.

Existen muchos otros usos para las redirecciones HTTP, entre ellos, forzar conexiones SSL seguras (es decir, usar httpsen lugar de http) y asegurarse de que todos los visitantes terminen solo en la www.dirección prefijada del sitio web.

El uso correcto de las redirecciones le permitirá aprovechar su presencia web actual y, al mismo tiempo, le dará la posibilidad de modificar la estructura de su sitio según sea necesario. Si desea obtener más información sobre las formas en que puede redirigir a sus visitantes, Nginx tiene una excelente documentación sobre el tema en las secciones del módulo de reescritura de la documentación oficial y la publicación del blog oficial sobre la creación de redirecciones .

SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja un comentario

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

Scroll al inicio