Una redirección web es un proceso que consiste en transferir al usuario de una página web hacia otra, o sea que cuando un usuario llega a una página se le redirige automáticamente a otra diferente por medio de este sistema.

Existen diferentes motivos por los cuales necesitemos hacer una redirección como por ejemplo:

  • La URL ya no existe.
  • Hemos cambiado el dominio.
  • Cambiamos la arquitectura de una web.
  • Queremos “llevar” a los usuarios a otras páginas.

¿Qué tipo de redirecciones existen?

A la hora de hacer una redirección podemos optar por diferentes tipos y formas de hacerlas dependiendo del motivo y de los medios técnicos que tengamos. No vamos a entrar en detalles puesto que existen muchas formas, aunque a nivel de SEO solo nos sirve una para trabajar, la más que conocida redirección 301, así que obviaremos redirecciones mediante HTML o Javascript. También dejaremos fuera redirecciones temporales (302).

Una redirección 301, por lo tanto, enviará la visita desde una URL a otra con la diferencia de que en este cambio de URL se traspasa la mayor parte del link juice, esto quiere decir que la popularidad que haya recibido la página a través de enlaces externos.

Google recomienda este tipo de redirecciones en su página de ayuda, por todo esto que consideramos que las redirecciones 301 son la mejor forma de hacer redirecciones SEO.

¿Cómo hacer una redirección 301?

Existen diferentes maneras de hacer una redirección pero vamos a empezar con la más común, la redirección a nivel de servidor. Para ello, si usamos un servidor apache, deberemos tener activado el módulo mod_rewrite. Haremos las modificaciones en el archivo llamado .htaccess.

El archivo .htaccess suele encontrarse en la raíz de nuestro servidor, se trata de un archivo de texto plano que podemos editor con cualquier editor de texto corriente.

Debemos tener en cuenta que una mala configuración de este archivo puede suponer que nuestro servidor no responda y que nos devuelva un error 500. Muchas veces el error 500 es debido a una mala sintaxis de este archivo.

Para editarlo recomendamos hacer SIEMPRE una copia de seguridad del mismo antes de realizar cualquier tipo de cambio, puedes hacerlo fácilmente con cualquier programa FTP.

Empecemos pues a redireccionar.

redirecciones 301

 

Redirecciones 301

Antes de empezar a crear redirecciones debemos asegurarnos de llamar correctamente al módulo mod_rewrite, para ello añadiremos esta primera linea en nuestro .htaccess:

Options +FollowSymlinks

RewriteEngine On

Es importante distinguir entre ruta y URL, para hacer las redirecciones entendemos como URL a toda la dirección web completa, incluyendo protocolo y subdominio. En las rutas en cambio, utilizaremos la dirección a partir de la finalización del dominio.

Ejemplo de URL: https://www.missconversion.es/contacto

Ejemplo de ruta: /contacto

Redirección simple

Básicamente consiste en redirigir desde una página A hacia una B, esta es la más sencilla de todas y también la más utilizada. Hacer este tipo de redirecciones es muy útil cuando detectamos errores 404 en Google Webmaster Tools o bien queremos mover o eliminar una página en concreto.

Para crear esta redirección basta con añadir Redirect 301 seguido de la ruta de la página antigua y posteriormente añadir la URL de la nueva página de destino dejando un código así:

Redirect 301 /pagina-antigua http://www.dominio.com/pagina-nueva

Es importante dejar una espacio entre cada una de las ordenes ya que tener espacios de más o tabulaciones puede provocar errores 500.

Redirección de directorios

Muchas veces necesitamos mover o renombrar un directorio completo, para ello tenemos que utilizar lo siguiente:

Redirect 301 /directorio-antiguo/ http://www.dominio.com/directorio-nuevo

Esto afecta solo a los directorios, si queremos que todas las páginas existenten se redirijan al mismo tiempo debemos de utilizar lo siguiente:

RedirectMatch 301 /directorio-antiguo/(.*) /nuevo-directorio/$1

Con esto conseguimos que todas las páginas que cuelguen del directorio antiguo redirijan hacia la nuevas utilizando la misma estructura. De este modo, aplicando este regla, la URL http://www.dominio.com/directorio-antiguo/pagina.html tendria una redirección 301 hacia http://www.dominio.com/directorio-nuevo/pagina.html, lo mismo ocurriría con todo lo que colgara del directorio.

Otra opción es redirigir todo un directorio hacia una misma página, por ejemplo si queremos eliminar toda una categoría de un blog y todo su contenido y redirigirlo a la página de inicio o por ejemplo la eliminación de una sección de una web. Para ello utilizamos esto:

RedirectMatch 301 ^/directorio-antiguo/(.*)$ http://www.dominio.com/pagina.html

Redirección de dominios

Muchas veces necesitamos redirigir todo un dominio, para ello tenemos tres opciones de redirección distintas.

Si solo necesitamos redirigir la raiz del dominio hacia un nuevo dominio bastará con añadir esto a nuestro .htaccess:

Redirect 301 / http://www.dominio.com/

Pero si queremos redirigir todo el dominio y su contenido hacia uno nuevo entonces usaremos esto:

RedirectMatch 301 ^(.*)$ http://www.dominio.com/

Y ya por último, si se trata de una migración completa de dominio y queremos que se redirija cada página antigua  hacia su correspondiente nueva página en el nuevo dominio, utilizaremos esto:

RedirectMatch 301 ^(.*)$ http://www.example.com/$1

 Redirección canónica del dominio (www a sin www y viceversa)

Esta es uno de los aspectos que primero miramos los SEOs cuando analizamos un sitio web, una página web solo debe responder por uno de los dos ya que si responde por ambos podriamos tener un problema de contenido duplicado, para solucionar esto basta con añadir a nuestro .htacces lo siguiente:

Redirigir mi dominio sin www a con www

RewriteCond %{HTTP_HOST} ^dominio.com [NC]
RewriteRule ^(.*)$ http://www.dominio.com/$1 [L,R=301]

 Redirigir mi dominio con www a sin www

RewriteCond %{HTTP_HOST} ^www.dominio.com [NC]
RewriteRule ^(.*)$ http://dominio.com/$1 [L,R=301]

Redirecciones con parámetros GET

Aquí la cosa ya se complica un poco más, normalmente en sites con URLs no amigables no encontramos con parámetros dentro de las URLs.

Si por ejemplo queremos redireccionar la página http://www.dominio.com/index.php?id=contacto hacia una página de tipo http://www.dominio,com/contacto/ deberemos de hacer uso de lo siguiente:

RewriteCond %{QUERY_STRING} id=contacto
RewriteRule ^index\.php$ /contacto/? [L,R=301]

Estas son las principales formas de hacer redirecciones en un servidor Apache pero que pasa si usamos Nginx o ISS, para las redirecciones en Nginx o ISS os preparemos un próximo artículo.

Herramientas y recursos útiles

Comprobar cabeceras: http://www.dnsqueries.com/es/chequear_http_headers.php

Editor para tu .htaccess: http://notepad-plus-plus.org/