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.
Redirect 301
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 útil 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.
¿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”.
16 comentarios
¿Que diferencia hay entre hacer las redirecciones desde htaccs o desde el propio CMS?
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!
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
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!
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!
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!
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
=)
Hola duda, quiero ponerle a mi sitio los https pero no lo he hecho ya que el sitio esta en linea desde el 2012 y esta muy bien posicionado en Google.
El codigo seria el siguiente?
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.ejemplo.com/$1 [R=301,L,QSA]
Lo recomiendas hacer?
Hola, es necesario indexar en el google search control un dominio que solo está reedireccionado? también es necesario enviar el sitemap?
Hola Cristina,
respuesta rápida: no.
Pero hay matices, por ejemplo si ese dominio ha tenido contenido en algún momento, te puede servir para saber si sigue teniendo paginas indexadas o cuando ya ha dejado de tenerlas.
De la misma forma, si es un dominio que tiene enlaces entrantes porque haya tenido cierto recorrido anteriormente. Puedes necesitar esa información.
Si es un dominio nuevo, por ejemplo la redireccion del .com al .es no hace falta, no hay información que recoger en search console.
Por lo del sitemap tampoco, ya que solo tendría una url y además redirigida. Al sitemap siempre hay que indicerle urls correctas, ni redirigidas ni con error de ninguna clase.
Saludos!
Hola, vamos a migrar una web de blogger a wordpress. Va a tener el mismo dominio .com
Entiendo que aún siendo así, usando el mismo dominio, tenemos que meter el código de redirecciones en el código del template de blogger. O no es necesario? Entiendo que sí para evitar contenidos duplicados porque se quedarían dos páginas con contenidos iguales (la de blogspot y la del dominio .com ahora alojada en el cms). He pensado que otra buena idea sería deshabilitar la indexación del blogger para que el crawler no pase. Teóricamente lo entiendo pero como nunca he hecho una migración como que a veces me da miedo cagarla jajajaja.
Gracias.
Buenos días Raul, pues si, puedes cagarla dependiendo del trafico que tengas claro…
Aún teniendo el mismo dominio tendrás que hacer redirecciones a no ser que repliques exáctamente la misma estructura de urls. Como son plataformas distintas, a poco compleja que sea, entiendo que eso no va a ser así.
Tus redirecciones de post serán algo como:
Redirect 301 /2014/11/la-pagina-que-sea.html https://www.dominio.com/la-pagina-que-sea
Redirect 301 la urls de blogger sin dominio [espacio] la url de destino, con domino.
Puede cambiar dependiendo de la estructura origen y fin, pero vamos, conociendo worpress y blogger ya te digo que no mucho.
Otra cosa, si vas a migrar a wordpress, por tu dominio va a responder el hosting de wordpress y ya nunca más blogger, por eso, el archivo de redirecciones ha de ir en el hosting wordpress. Date cuenta que en algún momento tu vas a hacer el cambio de dns y le dirás que el nuevo hosting para tu dominio es el wordpress, así que este va a ser quien reciba las peticiones de urls a redirigir, no se si me explico 🙂
Desindexar blogger, bueno, si las redirecciones están hechas no va a hacer falta. De hecho, por lo que te decía antes de que blogger ya nunca va a contestar peticiones de tu dominio, aunque lo pongas en desindexar nadie se va a enterar.
Espero haber ayudado.
Hola, me gusta mucho el artículo, pero tengo una duda: quiero cambiar de dominio y de hosting, y mi duda es en que archivo htaccess tengo que hacer las redirecciones del dominio antiguo al nuevo con todas las urls , pues el actual desaparecerá ya que dejo el hosting.
Gracias
Buenos días!
ok, cambias de dominio y de hosting todo a la vez, pero entiendo que el contenido es el mismo, con los mismos slugs (toda la url detrás del dominio)
Es decir, dominioviejo.com/esto-es-el-slug redirige a dominionuevo.com/esto-es-el-slug
En este caso debes tener los dos dominios activos, tanto el viejo como el nuevo. En el viejo mantener un htaccess con redirecciones al nuevo y en el nuevo pues tu web.
Mantener el dominio viejo no quiere decir que mantengas el hosting viejo, puedes poner los dos dominios en el nuevo hosting (si el plan te lo permite) y meter ahi las redirs.
Tendrás que cambiar donde apuntan las dns del dominio viejo al nuevo hosting, crear el dominio adicional y meter la regla de reescritura que toque en htaccess. Pero ya te digo, si es un plan monodominio no vas a poder hacerlo.
Saludos!
Ahhh perfecto, todo OK, si puedo tener 2 dominios. Se puede decir más alto pero no más claro. Muchas gracias