Evitar redirecciones para mejorar el SEO

Qué es una redirección web y cómo mejorar el rendimiento web y experiencia de usuario evitándolas.

Qué es una redirección web

Se trata de un recurso que emplea el programador o el administrador de un sitio web para redirigir el tráfico desde una dirección web o página a otra.

En la práctica significa que el navegador del usuario recibe una instrucción para realizar una conexión diferente a otro sitio.

Se emplean cuando queremos indicar al usuario que una determinada dirección web ha cambiado y así no perder los backlinks que apunten a nuestro sitio web.

Tener enlaces rotos es perjudical para el SEO del sitio web.

Se puede configurar una redirección de http a https cuando queremos que todo el tráfico de nuestro sitio web sea seguro.

Otro ejemplo es cuando se quiere redirigir todo el tráfico del dominio con www al dominio sin www.

Tipo de redirecciones

1. Redirecciones HTTP

Es el método preferido y el adecuado para no perder la funcionalidad del botón atrás del navegador. Se configura en el servidor un código de respuesta, response status code, de valor 301 o 302.

  • El codigo 301 indica que el recurso se ha movido a una nueva dirección de forma permanente. * Mientras que el código 302 indica que la redirección es temporal.

El código de respuesta 301 es el adecuado para realizar redirecciones de http a https.

La respuesta de redirección es cacheable utilizando otras cabeceras en la petición HTTP como son Expires o Cache-control.

El mecanismo de redirección es sencillo. El servidor web devuelve una cabecera de nombre Location que contiene la nueva dirección del recurso.

En este ejemplo, podemos ver como el servidor nos redirige al recurso que se sirve por https.

$ curl -I http://superadmin.es
HTTP/1.1 301 Moved Permanently
Location: https://superadmin.es/

2. Redirección en la programación

Funcionan del mismo modo que las redirecciones HTTP, esto es añadiendo una cebecera Location con la nueva dirección. El problema de realizar así la redirección es el consumo extra de recursos. Dependiendo del servidor de aplicación, php, java, nodejs,… el consumo en tiempo y recursos puede ser elevado, cpu, hilos, procesos…

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://superadmin.es/");

3. Redirección en el lado cliente

La redirección es llevada a cabo por el navegador, para ello se utilizan la etiqueta meta de html, que se coloca en la sección del head:

<html>
<head>
	<meta http-equiv="refresh" content="0; url=https://superadmin.es"/>
</head>
<body></body>
</html>

o bien, incrustando código javascript en la página:

<html>
<head></head>
<body>
<script>
	window.location.replace("https://superadmin.es/");
</script>
</body></html>

Las redirecciones en el lado cliente tienen varios inconvenientes. Principalmente destaco dos. Por un lado no siempre se realizarán ya que dependen del navegador. Si el navegador del cliente no entiende javascript no podrá realizar la redicción. Por otro lado, desde el punto de vista del SEO no se transmite completamente la autoridad.

Mejora el rendimiento y la experiencia de usuario

En general hay que evitar cualquier redirección, ya que obliga al navegador a buscar de nuevo el recurso en una nueva dirección. Si además, parte de sus recursos, imagenes, javascript, css,… se encuentran en la misma situación se puede malgastar un tiempo elevado.

En la medida de lo posible hay que evitar las redirecciones en la programacón (php, java,…) o en el navegador (html o javascript) y realizar las redirecciones 301 o 302 que resulten imprescindibles.

Configuraremos las redirecciones imprescindibles en el servidor (redirecciones 301 o 302)

Cómo hacer una redirección HTTP

Con directivas de servidor mod_rewrite:

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

Aprende más

Creative Commons License

Esta obra está bajo una licencia de Creative
Commons Reconocimiento-NoComercial-CompartirIgual
4.0 Internacional
.