¿Cómo redirigir URLs usando el servidor web Apache?

Actualizado el 31 de agosto, 2016. Por BlueHosting.

Cuando los recursos HTTP o las páginas web cambian de ubicación, a menudo es importante proveer algún medio para alertar a los usuarios que estos recursos han sido movidos. HTTP provee un número de códigos de "redirección" que pueden ser usados para facilitar este proceso, comunicando con la aplicación del cliente sin interferir con la experiencia de usuario. En este tutorial explicamos cómo usar la directiva Redirect para lograr este objetivo.

Apache provee un número de directivas de configuración para "redirección" que permiten a los administradores especificar recursos en el archivo de configuración para redirigir un sitio a otra URL. Cuando una solicitud es redirigida el servidor retorna un resultado para esa solicitud que instruye al cliente a que inicie una segunda solicitud, esta vez a la nueva ubicación del recurso de destino.

Las redirecciones pueden decirle al cliente que la página solicitada ha sido movida temporal o permanente. Apache proporciona herramientas que soportan estas funciones. Esta guía cubre las directivas de configuración Redirect, explica cómo configurar varias opciones de redirección y demuestra cómo redirigir ciertas clases de solicitudes a recursos en una nueva ubicación.

Esta guía asume que tiene una instalación de Apache en funcionamiento y que tiene acceso a la modificación de archivos de configuración. Si usted no tiene instalado Apache, puede usar alguna de nuestras guías básicas de instalación de Apache y de instalación de la Infraestructura LAMP. Si quiere indagar un poco más, puede usar nuestro tutorial sobre la estructura de configuración de Apache.

La directiva Redirect

Las directivas de configuración Redirect puede estar ubicada en los archivos de configuración principales del servidor, pero recomendamos que las mantenga en su entrada del hosting virtual o en los bloques del directorio. También es posible imponer sentencias Redirect en los archivos .httaccess. Aquí un ejemplo de una directiva Redirect:

Extracto del archivo: Opción de configuración de Apache

Redirect /nombredeusuario http://equipo.ejemplo.com/~nombredeusuario/

Si no se especifica un argumento, Redirect envía un estatus temporal (por ejemplo: 302). En este caso, se informa al cliente (agente del usuario) que el recurso disponible en /nombredeusuario ha sido movido temporalmente a la dirección http://equipo.ejemplo.com/~nombredeusuario/.

Recuerde que no importa en cuál archivo de configuración se encuentran; las sentencias Redirect deben especificar la ruta completa del recurso al cual se redirigirá a continuación del nombre de dominio. Estas sentencias también deben incluir el URL completo de la nueva ubicación del recurso.

Para especificar un estatus de redirección HTTP particular, especifique uno de los siguientes estatus:

Extracto del archivo: opción de configuración de Apache

Redirect permanent /nombredeusuario http://equipo.ejemplo.com/~nombredeusuario/
Redirect temp /nombredeusuario http://equipo.ejemplo.com/~nombredeusuario/
Redirect seeother /nombredeusuario http://equipo.ejemplo.com/~nombredeusuario/
Redirect gone /nombredeusuario

La primera redirección le dice al cliente que este recurso ha sido movido permanente, lo cual se corresponde con el estatus 301 de HTTP. El estatus "temp" es el comportamiento predeterminado, especificando que la redirección solo es temporal; esto se corresponde con el estatus 302 de HTTP. El estatus "seeother" envía una señal (estatus 303 HTTP) que indica que el recurso solicitado ha sido remplazado por otro recurso. Finalmente, el estatus "gone" le indica al cliente que el recurso ha sido removido (permanente); esto envía el estatus 410 de HTTP, como una alternativa al estatus "404" (no disponible). En el caso de una redirección "gone", debe omitir la URL final.

También puede indicar los códigos HTTP especificamente como sigue:

Extracto del archivo: opción de configuración de Apache

Redirect 301 /nombredeusuario http://equipo.ejemplo.com/~nombredeusuario/
Redirect 302 /nombredeusuario http://equipo.ejemplo.com/~nombredeusuario/
Redirect 303 /nombredeusuario http://equipo.ejemplo.com/~nombredeusuario/
Redirect 410 /nombredeusuario

Esto sería totalmente equivalente al ejemplo anterior.

Apache también provee dos directivas adicionales para las redirecciones temporales y permanentes que son un poco más explícitas:

Extracto del archivo: opción de configuración de Apache

RedirectPermanent /nombredeusuario/bio.html http://equipo.ejemplo.com/~nombredeusuario/bio/
RedirectTemp /nombredeusuario/bio.html http://equipo.ejemplo.com/~nombredeusuario/bio/

Adicionalmente, Apache hace posible redirigir una clase determinada de solicitudes para que coincidan con una expresión regular usando la directiva RedirectMatch. Por ejemplo:

Extracto del archivo: opción de configuración de Apache

RedirectMatch (.*)\.jpg$ http://static.ejemplo.com.jpg 

La directiva coincide con toda solicitud de un archivo con extensión .jpg y la remplaza con una ubicación en un segundo dominio. Por lo tanto:

  • Una solicitud a http://www.ejemplo.com/avatar.jpg será redirigida a http://static.ejemplo.com/avatar.jpg.
  • Una solicitud a http://www.ejemplo.com/imagenes/avatar.jpg será redirigida a http://static.ejemplo.com/imagenes/avatar.jpg

Más allá de la redirección de URLs

La directiva Redirect provee una funcionalidad básica para apuntar las solicitudes de recursos específicos a nuevas URLs y puede ayudar a los administradores a mover contenido a ubicaciones y servidores distintos sin tener que romper los enlaces existentes. Sin embargo, muchos usuarios de Apache la utilizan para "rescribir" URLS en el módulo mod_rewrite de Apache. Si tiene problemas para mantener organizada su configuración de Apache o necesita más control del que ofrecen las sentencias Redirect, lo animamos a investigar acerca de mod_rewrite.

Recursos adicionales

Para complementar la información aquí presentada puede consultar los siguientes recursos. Aunque este material es provisto esperando que sea útil, tome en cuenta que no podemos certificar su actualidad o precisión.

  • Documentación oficial de Apache. Este primer enlace presentar la información según las versiones de Apache. Dato interesante: ¡podrá encontrar varias guías en español!

¿QUÉ DESEAS SABER?

Intentaremos leer tu mente...