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

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Revisión de los métodos de redireccionamiento
    1. Redirecciones temporales
    2. Redirecciones permanentes
    3. Forzar SSL
  • Paso 2 – Cómo redirigir en Apache
    1. Uso de la directiva Redirect
    2. Uso de la directiva RedirectMatch
    3. Usando mod_rewrite para redirigir
  • Paso 3 – Cómo redirigir en Nginx
  • Conclusió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.nety myspiders.orgy redirigirlos a su myspiders.comsitio. 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.coma 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_aliasmó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_aliasmó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 nanotu editor de texto favorito:

    1. 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.htmlarchivo ubicado en /var/www/htmlsu 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.compodrí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.coma www.domain2.com. Esto es solo para una sola página, no para todo el sitio.

    De forma predeterminada, la Redirectdirectiva 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 RedirectMatchdirectiva, 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.

    RedirectMatchCoincide 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 /imagesdirectorio 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 Redirectdirectiva, 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:

    1. 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 nanotu editor de texto favorito:

    1. 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.htmlarchivo ubicado en /var/www/htmlsu 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.compodrí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 returndirectiva 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 $schemevariable 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 rewritedirectiva. Esta directiva, cuando se coloca en un bloque de servidor, emitirá una redirección temporal para las solicitudes dentro del imagesdirectorio 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 redirectal permanentfinal de la declaración.

    Para que los cambios surtan efecto, deberá reiniciar Nginx. En un servidor Ubuntu moderno, puede hacerlo con systemctl:

    1. 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

    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 una respuesta

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

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion