En este artículo te cuento qué es una redirección web y cuánto mejora la velocidad de un sitio al eliminar las redirecciones innecesarias.
Las redirecciones las crean los programadores o las aplicaciones como WordPress para redirigir a los visitantes de una dirección web que tratan de ver a otra.
Son útiles para indicar que una dirección web ha cambiado y redirigir al usuario a la nueva dirección web. De otro modo, al tratar de navegar a una dirección anterior el usuario obtendría un error 404 o página no encontrada. Estos enlaces a páginas inexistentes los llamamos enlaces rotos y son bastante frustrantes para los visitantes.
Además, tener enlaces rotos es perjudicial para el SEO.
Así, las tiendas online usan las redirecciones para redirigir todo el tráfico no seguro (http) a tráfico seguro (por https) y así proteger los datos de sus clientes.
De modo similar, es posible redirigir todo el tráfico del dominio con www al dominio sin www o viceversa.
Tipo de redirecciones
Ahora te enseñaré que tipos de redirecciones existen, cuando usarlas y cuáles debes evitar:
1. Redirecciones HTTP
Es el servidor web (Apache, Nginx,…) el que envía la orden de redirección en una cabecera HTTP de respuesta.
Funciona del siguiente modo: cuando un visitante intenta navegar a una página que ya no existe, el servidor web devuelve en la respuesta una cabecera de nombre Location que contiene la nueva dirección de la página.
Con las herramientas para desarrolladores de Firefox puedes descubrir una redirección de lado del servidor:
Para crear redirecciones en el servidor necesitas modificar sus ficheros de configuración. Existen dos tipos de redirección:
- Redirección 301 o redirección permanente. Es el adecuado para hacer redirecciones de http a https o entre distintos dominios.
- Redirección 302 o redirección temporal.
Las redirecciones de servidor usan pocos recursos y son las recomendadas en la mayor parte de los casos. La desventaja es que la configuración es mas compleja y no todos los proveedores de alojamiento las permiten.
La respuesta de redirección es cacheable usando las cabeceras Expires o Cache-control.
2. Redirección por programación
También funcionan añadiendo la cabecera Location a la respuesta que se genera dinámicamente por programación (normalmente PHP).
El problema de realizar así la redirección es el consumo extra de tiempo y recursos de cpu, procesos, uso de base de datos…
Ejemplo de una redirección realizada en PHP a través de programación:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://example.org/");
?>
3. Redirección en el lado cliente
La redirección se establece en el código HTML de la página y el navegador realiza la redirección al cargar la web.
Los programadores establecen la redirección usando la etiqueta meta de HTML, que se coloca en la sección del HEAD como en este ejemplo:
<html>
<head>
<meta http-equiv="refresh" content="0; url=https://example.org"/>
</head>
<body>...</body>
</html>
o bien, creando redirecciones con código javascript:
<html>
<head></head>
<body>
<script>
window.location.replace("https://example.org/");
</script>
</body>
</html>
Las redirecciones en el lado cliente tienen varios inconvenientes. Te voy a destacar dos:
- No siempre se realizará la redirección ya que no todos los navegadores ejecutan Javascript.
- Desde el punto de vista del SEO no se transmite la autoridad entre el enlace viejo y el nuevo.
Mejora el rendimiento y la experiencia de usuario
En general hay que evitar cualquier redirección, ya que obliga al navegador a buscar el nuevo recurso. Si son muchos recursos, imagenes, javascript, css,… aumentará innecesariamente el tiempo de carga de la página web.
En la medida de lo posible hay que evitar las redirecciones en la programación (WordPress, PHP, java,…) o en el navegador (HTML o javascript) y realizar las redirecciones 301 o 302 que resulten imprescindibles.
Cómo hacer una redirección con .htaccess
Por último he recopilado las redirecciones de lado del servidor más frecuentes que puedes hacer editando el fichero .htaccess.
- Redirección permanente de una página a otra
Redirect 301 /carpeta/antes.php http://destino.es/despues/
Cuando hagas redirecciones a carpetas no olvides poner la barra final (/). Así evitarás que el servidor web haga esta redirección.
- Redirección permanente de un dominio a otro
RewriteEngine On
RewriteRule ^(.*)$ http://destino.es/$1 [L,R=301]
Evita el uso de las directivas alias del servidor para no ser penalizado por contenido duplicado en los buscadores.
- Redirección del dominio sin www a www
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteCond %{HTTP_HOST} ^(.+)$ [NC]
RewriteRule ^(.*)$ http://www\.%1/$1 [R=301,L]
- Redirección de http a https
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.dominio.com/$1 [R,L]
Utilizando la variable de servidor HTTPS, en configuraciones de WordPress con proxy inverso en conexión no segura:
RewriteCond %{HTTP_HOST} ^(www\.)?dominio\.es$ [NC]
RewriteCond %{ENV:HTTPS} on
RewriteRule ^(.*)$ http://www.dominio.es/$1 [R=301,L]
¿Te ha gustado? Mándame ánimos con un comentario. ¡Gracias!
Mabel.