Redirección 301 Guía Completa de Escenarios y Códigos

Redirect 301 La guia de las guías 2020

Las redirecciones 301 son sin duda parte del día a día en el trabajo de un SEO técnico, y de cualquier persona que publique contenidos de cualquier tipo.

El concepto es tan sencillo como hacer que el usuario que llegue a una URL sea enviado automáticamente a otra, pero los casos de uso son muy variados.

Existen otros métodos para hacer redirecciones, como meta refresh y también otro tipo de redirecciones, como las 302 para cambios no definitivos.

En la mayoría de los casos, las redirecciones 301 son las más adecuadas y la edición de htaccess el método más efectivo.

Los motivos por los que se hacen redirecciones 301 son varios:

Cambio del dominio de una web, redirecciones dominio a dominio

Este caso es el más sencillo de todos y se da cuando una web ya indexada y posicionada cambia de dominio por el motivo que fuera.

Es importante tener en cuenta que solo ha de cambiar el dominio, pero la estructura de urls se mantiene tal cual.

En este caso, el código en nuestro htaccess quedaría así:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RedirectMatch 301 ^(.*)$ http://www.ejemplo.com/$1
</IfModule>

Las partes en verde son imprescindibles, ya que nuestro servidor hace uso del módulo mod_rewrite para hacer las redirecciones, y se usarán en todas las redirecciones.

Muchas veces un cambio de dominio implica un cambio en la estructura de urls, ya que es un proyecto nuevo, o un CMS distinto. En este caso hay que hacer redirecciones específicas para cada url o grupo de urls.

Redirecciones de página a página

Es el caso en que una única página de tu dominio redirige a otra, ya se de tu dominio o de cualquier otro.

Redirect 301 /pagina/ http://www.ejemplo.com/otra-pagina.html

Este es el caso más habitual para:

Eliminar errores 404: Si en Search Console vemos páginas publicadas con error, podemos redirigirlas a una página similar.

Eliminar definitivamente productos de un catálogo. Por ejemplo, si nuestra tienda online tiene una ficha de producto bien posicionada, pero ese producto se descataloga. En este caso redirigiremos la página de producto a otro similar si lo hubiera, si no, a la categoría  o a la home.

Fusionar contenidos: Te has dado cuenta de que uno de tus artículos posiciona por las mismas palabras clave que otro, así que decides unificarlos.

Bien, pues la url del post que desaparezca debería redirigir vía 301 al post que se mantiene.

Redirecciones de versión canónica (www) http y https y barra final

Estos tres casos son muy parecidos, y las redirecciones han de hacerse para que solamente haya una versión navegable de la web.

De lo contrario, un mismo contenido podría ser navegable hasta en 6 versiones siendo exáctamente el mismo. Con y sin www, http y https con y sin / final.

El motor de google siempre va a tomar una versión “preferida“ automáticamente, ya que los enlaces se crean en una u otra versión, pero no es raro encontrar fallos en esta detección, sobre todo cuando ha habido algún cambio reciente.

Hay que seleccionar una de las versiones y hacerla la “oficial”.

¿Cómo elegimos?

Si ya tenemos indexadas y posicionadas urls, seguramente sean en una versión concreta, nos quedamos con esa.

Si no tenemos nada posicionado aún, nos quedaremos con la versión https.

Con o sin / final seguramente lo marque cómo monta las urls nuestro CMS.

Con y sin www también es más personal que otra cosa.  Una url sin www seria difícil de reconocer como tal en una publicación impresa, sin embargo, cualquier palabra o frase con www delante se reconoce como una url.

Por otro lado, en la última actualización de Chrome, las www se ocultan, y da pistas de la poca importancia que tienen ya.

Hay que fijarse en cómo se forman las urls en nuestra web, ya que las urls de los enlaces no es recomendable que estén redirigidas, es decir, si nuestro sitio monta los enlaces con www, o los cambiamos todos, o elegimos esa como versión “oficial”.

Sin www a www

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

Con www a sin www

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

Este código redirecciona tanto la home como las páginas internas. Tanto en este como en el siguiente ejemplo, se pasa el modificador R=301 que especifica el 301 como tipo de redirección. Sin este modificador las redirecciones también funcionan, pero serían de tipo 302, ya que es el valor por defecto para rewriterule.

De http a https

RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.ejemplo.com/$1 [R=301,L,QSA]

De https a http

RewriteCond %{HTTPS} on
RewriteRule (.*) http://www.ejemplo.com/$1 [R=301,L,QSA]

Este caso es el típico en el que a una web publicada en http se le instala un certificado de seguridad, y necesitamos forzar toda la navegación a https. En WordPress es muy util el plugin easy https que hace todo el trabajo (también cambiar los links) por nosotros.

Sin / final a con / final

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*) http://www.example.com/$1/ [R=301,L,QSA]

Con / final a sin / final

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ http://www.example.com/$1 [R=301,L,QSA]

Redirección de directorios completos

En el caso de que queramos, por ejemplo, cambiar el nombre de una categoría a nuestra tienda o blog:

Redirect 301 /viejo-nombre/ http://www.ejemplo.com/nuevo-nombre

Es una redirección de url a url como las que hemos explicado antes, pero si nuestros post o artículos montan sus urls con la ruta completa de navegación, estas urls también han de ser redirigidas.

RedirectMatch 301 /viejo-nombre/(.*) /nuevo-nombre/$1

Con esta regla cambiamos el nombre del directorio en las urls que dependan de él.

Solicita presupuesto sin compromiso

¿Cuánto tiempo mantener las redirecciones?

Desde Google nos informan que una url redirigida puede tardar entre 6 meses y un año en detectarse.

En la práctica, si no hay urls antiguas indexadas, se podrían eliminar.

Aspectos a tener en cuenta

Muy importante, el archivo .htaccess no solo sirve para hacer redirecciones, por lo que una mala configuración puede hacer que nuestra web no funcione.

SIEMPRE hay que hacer una copia antes de modificar nada, para volver atrás cuando sea necesario.

.htacces es un fichero de texto, y puede editarse con cualquier editor de texto plano: Notepad++, Textedit o el propio Notepad de Windows.

El archivo .htaccess se edita como cualquier otro archivo de la web, mediante un cliente FTP (Filezilla por ejemplo).

Este archivo se encuentra en la raíz del sitio, y en ocasiones, este archivo está oculto, por lo que tenemos que indicar a filezilla (o cliente FTP que se esté usando) que muestre archivos ocultos.

Filezilla da esta opción en el menú superior “servidor” y check en “forzar mostrar archivos ocultos”.

Roberto Gorraiz
CEO en AgenciaSEO.eu, experto en Marketing Online y en Estrategia Digital
Publicado el

8 Comentarios

  1. Manu says:

    ¿Que diferencia hay entre hacer las redirecciones desde htaccs o desde el propio CMS?

    • Roberto Gorraiz says:

      Hola Manu,
      a priori ninguna, ya que el resultado debe ser el mismo si el CMS marca la redirección como 301 correctamente. Comprueba que el cms no haga otro tipo de redirección como una 302, un meta refresh o redirija via javascript. Eso depende de como las monte el cms o de la extensión que se le haya puesto para gestionarlas.
      Puede haber más diferencias, si, en el rendimiento de la plataforma. Htaccess es un archivo ajeno al CMS, que se lee antes de cualquier archivo o funcionalidad ante una petición de url, por lo que todas las redirecciónes que pongas en él se leerán cada vez que se solicite una página (malo para el rendimiento). Si tu cms mantiene una tabla interna de redirecciones, solo se leerá redirección al consultar la url concreta (mejor si tienes muchísimas redirs). De todas formas, la diferencia es poca, a no ser que metas miles de redirecciones manuales en tu htaccess.
      Por otro lado en htaccess se pueden hacer redirecciones masivas con reglas de reescritura, que afectan a cientos/miles de urls sin mermar nada el rendimiento y suele ser más versátil cuando las conoces.
      Hay muchos matices, pero en general son eso, matices, que para pocas urls ni siquiera hay que tener en cuenta. Para muchísimas, habría que valorar el escenario…

      Un saludo!

  2. martin says:

    tengo una consulta, me e dado cuenta que en mi web la mayoria de urls tiene redireccion 301, esto es malo cara a google, porque en los tiempos de carga si que influye de eso estoy seguro, ¿que me aconsejais? e pensado en crear un nuevo producto con la url definitiva y desindexar el viejao y eliminarlo y indexar el nuevo. Gracias por vuestra atencion

    • Roberto Gorraiz says:

      Hola Martin, es un problema muy común.

      Lo mejor siempre es evitar los redireccionamientos internos cambiando las URL por las versiones finales en aquellos contenidos donde estén enlazados.
      Esto se puede hacer mediante una consulta en la base de datos, o usando plugins de forma temporal en tu CMS.

      Cuando elimines o cambies una URL, no olvides redireccionar la antigua por la nueva, así no perderás visitas que lleguen a la página antigua, y traspasarás la fuerza a la nueva URL para mantener su posicionamiento.

      Saludos!

  3. Tarco says:

    Buenas noches,
    estoy intentando resolver un problema que detecta Woorank a la hora de analizar una web.

    Lo que intento solventar es lo siguiente:
    – Indexación
    —- Resolver URL : ¡Cuidado! No has configurado una redirección 301 para enviar tráfico a tu dominio preferido. Si las versiones con www. y sin www. cargan correctamente ¡es contenido duplicado! No todas las versiones de tu página apuntan a la misma URL.

    Resulta que necesito hacer, mediante redirección 301 que las distintas versiones (http://ejm.com; http://www.ejm.com; http://www.ejm.com) se redirijan a https://ejem.com (para que sea sitio seguro y sea la URL canónica).

    He probado infinidad de códigos en el .htaccess y no he conseguido hacerlo del todo bien… Sólo colgar la web miles de veces. El último que he probado es:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.ejm\.com [NC]
    RewriteRule https://ejm.com/ [R=301]
    RewriteCond %{HTTPS} off
    RewriteRule https://ejm.com/ [L,R=301]

    Con este, la versión http://ejm.com no se redirecciona a https://ejm.com

    Muchas gracias de antemano!

  4. Eric Jorge Seguí Parejo says:

    Hola Tarco!

    Cuando subas el código, no realices la comprobación con Woorank, comprueba que la redirección se cumple de forma manual o utiliza otra herramienta como Screaming Frog Spider.

    Antes de realizar la comprobación, elimina la cache de la web y visita la página en modo incógnito.

    Si tienes un WordPress, puedes instalar el plugin Really simple SSL que te facilita todo esto.

    También puedes contactar donde tienes contratado el servidor ya que seguramente puedan ayudarte si les mandas un ticket.

    Saludos!

  5. Tarco says:

    Muchas gracias por la respuesta,
    Lo que busco es que el análisis de woorank me de positivo en ese punto.

    ¿Por qué no utilizar Woorank para analizarla de nuevo?

    ¿No hay forma mediante htaccess de forzar que entre todo el tráfico al https://ejm.com? Sin las www.

    Gracias!

    • Eric Jorge Seguí Parejo says:

      Hola Tarco de nuevo!

      Si lo estás haciendo con la versión gratuita es posible que te de problemas.

      No sé si lo han cambiado, pero antiguamente Woorank cacheaba las páginas en la versión gratuita y solo realizaba un análisis realmente de la página enviada, luego te mostraba lo que ya tenía rastreado, vamos que no hacía múltiples veces el rastreo.

      No sé si lo han cambiado, pero es por ello que te comento de hacer la prueba manual o con otra herramienta, porque seguramente lo tengas bien con los códigos expuestos en el artículo pero Woorank te esté mostrando los primeros resultados ya rastreados y no esté volviendo a rastrear la página realmente.

      Saludos!
      Eric
      =)

Leave a Reply

Your email address will not be published. Required fields are marked *

Acepto la política de privacidad *

Call Now Button
Pide
Presupuesto

#FrenarLaCurva