Cómo crear redirecciones temporales y permanentes con Apache y Nginx

Introducción
La redirección HTTP, o redirección de URL, es una técnica que permite dirigir un dominio o dirección a otro. La redirección tiene muchos usos y se deben tener en cuenta algunos tipos diferentes de redirección. Las redirecciones se utilizan siempre que un sitio necesita que las personas que solicitan una dirección sean dirigidas a otra.
A medida que crea contenido y administra servidores, a menudo encontrará la necesidad de redirigir el tráfico de un lugar a otro. En esta guía, se analizarán los diferentes casos de uso de estas técnicas y cómo implementarlas en Apache y Nginx, los dos servidores web más comunes.
Prerrequisitos
-
Un servidor Ubuntu 20.04 configurado siguiendo la guía de configuración inicial del servidor Ubuntu 20.04 , incluido un usuario sudo no root y un firewall.
-
Apache o Nginx instalado en su servidor, lo cual puede hacer siguiendo Cómo instalar Apache en Ubuntu 20.04 o Cómo instalar Nginx en Ubuntu 20.04 . Tanto Apache como Nginx se pueden instalar al mismo tiempo, y muchas pilas hacen uso de ambos servidores a la vez, pero de forma predeterminada, entrarán en conflicto en los puertos HTTP/HTTPS predeterminados 80 y 443 , por lo que si está siguiendo este tutorial en una configuración de servidor estándar, solo debe instalar uno a la vez.
Paso 1: Revisión de los métodos de redireccionamiento
Existen muchos casos de uso para las redirecciones. Si ha establecido una presencia en la web y desea cambiar su dominio, 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 pierda toda la credibilidad que ha trabajado para establecer.
A menudo, resulta útil registrar varias variaciones de un nombre para aprovechar las ventajas de que los usuarios escriban direcciones similares a las de su dominio principal. Por ejemplo, si tiene un dominio llamado myspiders.com
, también puede comprar los nombres de dominio para myspiders.net
y myspiders.org
y redirigirlos a su myspiders.com
sitio. Esto le permite atrapar a los usuarios que podrían estar intentando acceder a su sitio con la dirección incorrecta. También puede ayudar a evitar que otro sitio use un dominio similar y se beneficie de su presencia web.
A veces, es necesario cambiar los nombres de las páginas que ya se han publicado y que han recibido tráfico en su sitio. Normalmente, esto daría lugar a un error 404 Not Found o posiblemente a otro error según su configuración de seguridad. Esto se puede evitar dirigiendo a sus visitantes a otra página que contenga el contenido correcto al que estaban intentando acceder. Existen diferentes tipos de redireccionamientos de URL, cada uno de los cuales significa algo diferente para el navegador del cliente. Los dos tipos más comunes son los redireccionamientos temporales 302 y los redireccionamientos permanentes 301.
Redirecciones temporales
Las redirecciones temporales son útiles si el contenido de su sitio web para una determinada URL debe publicarse temporalmente desde una ubicación diferente. Por ejemplo, si está realizando tareas de mantenimiento del sitio, es posible que necesite utilizar una redirección temporal de todas las páginas de su dominio a una página de explicación para informar a sus visitantes que volverá pronto.
Las redirecciones temporales informan al navegador que el contenido se encuentra temporalmente en una ubicación diferente, pero que debe seguir intentando acceder a la URL original.
Redirecciones permanentes
Las redirecciones permanentes son útiles cuando su contenido se ha movido a una nueva ubicación para siempre.
Esto es útil cuando necesitas cambiar de dominio o cuando la URL debe cambiar por otros motivos y la ubicación anterior ya no se utilizará. Esta redirección informa al navegador que ya no debe solicitar la URL anterior y que debe actualizar su información para que apunte a la nueva URL.
Forzar SSL
Un uso común de las redirecciones es dirigir todo el tráfico del sitio para utilizar SSL en lugar de HTTP estándar.
Al utilizar redirecciones, es posible redirigir todas las solicitudes http://www.mysite.com
a https://www.mysite.com
. Si se utiliza LetsEncrypt para proporcionar HTTPS, se generará automáticamente una configuración de redireccionamiento como esta.
En la siguiente parte de este tutorial, aprenderá algunas configuraciones de ejemplo para redirecciones mediante el servidor web Apache. Si utiliza Nginx y no tiene planes de utilizar Apache, puede saltar al paso 3.
Paso 2 – Cómo redirigir en Apache
Apache puede redirigir usando algunas herramientas diferentes. Se pueden implementar redirecciones sencillas con herramientas del mod_alias
módulo y se pueden crear redirecciones más extensas con mod_rewrite
.
Uso de la directiva Redirect
En Apache, puedes implementar redirecciones de una sola página mediante la directiva “Redirect”, que está incluida en el mod_alias
módulo que está habilitado de forma predeterminada. Esta directiva acepta al menos dos argumentos: la URL anterior y la URL nueva.
Los bloques del servidor Apache se pueden almacenar en el archivo de configuración principal de Apache en /etc/apache2/apache2.conf
, pero son más fáciles de mantener si crea un nuevo archivo en /etc/apache2/sites-available/
para cada configuración. La convención de Apache es crear enlaces simbólicos (como accesos directos) desde archivos en sites-available/
a otra carpeta llamada sites-available/
según decida habilitarlos o deshabilitarlos. De manera predeterminada, Apache se instala con una única configuración específica del sitio en la que está habilitado y vinculado a ./etc/apache2/sites-available/000-default.conf
/etc/apache2/sites-enabled/000-default.conf
Puedes abrir esa configuración usando nano
tu editor de texto favorito:
- sudo nano /etc/apache2/sites-available/000-default.conf
De forma predeterminada, contiene una configuración de servidor web estándar que escuchará en el puerto 80 y buscará un index.html
archivo ubicado en /var/www/html
su sistema.
/etc/apache2/sites-available/000-default.conf
VirtualHost *:80# The ServerName directive sets the request scheme, hostname and port that# the server uses to identify itself. This is used when creating# redirection URLs. In the context of virtual hosts, the ServerName# specifies what hostname must appear in the request's Host: header to# match this virtual host. For the default virtual host (this file) this# value is not decisive as it is used as a last resort host regardless.# However, you must set it for any further virtual host explicitly.#ServerName www.example.comServerAdmin webmaster@localhostDocumentRoot /var/www/html…/VirtualHost
Si en cambio necesitaras redirigir las solicitudes a domain1.com
, domain2.com
podrías eliminar las directivas existentes de este bloque de servidor y reemplazarlas con una redirección permanente:
/etc/apache2/sites-available/000-default.conf
VirtualHost *:80ServerName www.domain1.comRedirect / http://www.domain2.com/VirtualHostVirtualHost *:80ServerName www.domain2.com. . .. . ./VirtualHost
Guarde y cierre el archivo. Si está utilizando nano
, presione “Ctrl+X”, luego, cuando se le solicite, “Y” y luego Enter.
Esta redirección le indica al navegador que dirija todas las solicitudes www.domain1.com
a www.domain2.com
. Esto es solo para una sola página, no para todo el sitio.
De forma predeterminada, la Redirect
directiva establece una redirección 302 o temporal. Si desea crear una redirección permanente, puede hacerlo de cualquiera de las dos formas siguientes:
/etc/apache2/sites-available/000-default.conf
VirtualHost *:80ServerName www.domain1.comRedirect 301 /oldlocation http://www.domain2.com/newlocation/VirtualHost
/etc/apache2/sites-available/000-default.conf
VirtualHost *:80ServerName www.domain1.comRedirect permanent /oldlocation http://www.domain2.com/newlocation/VirtualHost
Uso de la directiva RedirectMatch
Para redirigir más de una página, puede utilizar la RedirectMatch
directiva, que le permite especificar patrones de coincidencia de directorios utilizando expresiones regulares.
Esto le permitirá redirigir directorios completos en lugar de sólo archivos individuales.
RedirectMatch
Coincide con los patrones entre paréntesis y luego hace referencia al texto coincidente en la redirección utilizando “$1”, donde 1 es el primer grupo de texto. A los grupos subsiguientes se les asignan números de manera secuencial.
Por ejemplo, si desea hacer coincidir cada solicitud de algo dentro del /images
directorio con un subdominio llamado images.example.com
, puede usar lo siguiente:
/etc/apache2/sitios-disponibles/predeterminado
VirtualHost *:80…RedirectMatch ^/images/(.*)$ http://images.example.com/$1…/VirtualHost
Al igual que con la Redirect
directiva, puede especificar el tipo de redirección agregando el código de redirección antes de las reglas de ubicación de la URL.
Para que los cambios surtan efecto, deberá reiniciar Apache. En un servidor Ubuntu moderno, puede hacerlo con systemctl
:
- sudo systemctl restart apache2
Usando mod_rewrite para redirigir
La forma más flexible, pero complicada, de crear reglas de redireccionamiento es con el módulo llamado mod_rewrite
. Para obtener información sobre cómo trabajar con mod_rewrite
, consulte Cómo reescribir URL con mod_rewrite para Apache .
En la siguiente parte de este tutorial, aprenderá algunas configuraciones de ejemplo para redirecciones utilizando el servidor web Nginx. Si ya instaló y configuró Apache, deberá tener el puerto 80 libre antes de seguir los pasos de configuración para Nginx en el mismo servidor. Puede lograr esto desinstalando temporalmente Apache con apt remove
, que conservará sus archivos de configuración si luego desea reinstalarlo, o cambiando la configuración de Apache para escuchar conexiones en un puerto distinto del 80, que es utilizado por Apache, Nginx y todas las conexiones HTTP de manera predeterminada.
Paso 3 – Cómo redirigir en Nginx
Las redirecciones en Nginx son una característica fundamental y utilizan directivas comunes de Nginx. La mayoría de las veces, puedes implementar redirecciones creando un nuevo bloque de servidor para cada URL.
Los bloques del servidor Nginx se pueden almacenar en el archivo de configuración principal de Nginx en /etc/nginx/nginx.conf
, pero son más fáciles de mantener si crea un nuevo archivo en /etc/nginx/sites-available/
para cada configuración. La convención de Nginx es crear enlaces simbólicos (como accesos directos) desde archivos en sites-available/
a otra carpeta llamada sites-available/
según decida habilitarlos o deshabilitarlos. De manera predeterminada, Nginx se instala con una única configuración específica del sitio en la que está habilitado y vinculado a ./etc/nginx/sites-available/default
/etc/nginx/sites-enabled/default
Puedes abrir esa configuración usando nano
tu editor de texto favorito:
- sudo nano /etc/nginx/sites-available/default
De forma predeterminada, contiene una configuración de servidor web estándar que escuchará en el puerto 80 y buscará un index.html
archivo ubicado en /var/www/html
su sistema.
/etc/nginx/sites-available/predeterminado
server { listen 80 default_server; listen [::]:80 default_server;… root /var/www/html; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html;…}
Si en cambio necesitaras redirigir las solicitudes a domain1.com
, domain2.com
podrías eliminar las directivas existentes de este bloque de servidor y reemplazarlas con una redirección permanente:
/etc/nginx/sites-available/predeterminado
server {listen 80;server_name domain1.com;return 301 $scheme://domain2.com$request_uri;}
Guarde y cierre el archivo. Si está utilizando nano
, presione “Ctrl+X”, luego, cuando se le solicite, “Y” y luego Enter.
La return
directiva ejecuta una sustitución de URL y luego devuelve el código de estado que se le dio y la URL de redirección.
En este caso, utiliza la $scheme
variable para utilizar el esquema que se utilizó en la solicitud original (http o https). Luego, devuelve el código de redirección permanente 301 y la URL recién creada.
Para procesar una redirección de carpeta a un subdominio independiente, puede realizar una operación similar a la redirección de carpeta de Apache utilizando la rewrite
directiva. Esta directiva, cuando se coloca en un bloque de servidor, emitirá una redirección temporal para las solicitudes dentro del images
directorio al subdominio images.example.com
:
/etc/nginx/sites-available/predeterminado
server {…rewrite ^/images/(.*)$ http://images.example.com/$1 redirect;…}
Para una redirección permanente, puede cambiar redirect
al permanent
final de la declaración.
Para que los cambios surtan efecto, deberá reiniciar Nginx. En un servidor Ubuntu moderno, puede hacerlo con systemctl
:
- sudo systemctl restart nginx
Puede ampliar esta configuración de muchas otras maneras. El uso de estos fundamentos de Nginx para producir la configuración de servidor deseada puede mantener su pila muy ágil, además de ayudar a documentar y manejar de manera concisa cualquier posible caso extremo relacionado con el tráfico de su servidor.
Conclusión
En este tutorial, aprendiste a configurar redirecciones temporales y permanentes para servidores web populares. Asegúrate de usar el tipo de redireccionamiento correcto, ya que un uso inadecuado de redirecciones temporales puede perjudicar tu ranking de búsqueda.
El uso correcto de las redirecciones le permitirá aprovechar su presencia web actual y, al mismo tiempo, modificar la estructura de su sitio según sea necesario. Si desea obtener más información sobre cómo configurar redirecciones en Nginx, puede leer Cómo crear redirecciones temporales y permanentes con Nginx
Deja una respuesta