Sep 222012

Prestashop: redireccionar las antiguas páginas indexadas a las nuevas URLs

Tweet about this on Twitter0Share on LinkedIn6Buffer this pageEmail this to someone

Esta semana voy apurado de tiempo por curro (¡y me alegro!) así que no me he podido currar uno de mis posts de esos en los que me enrollo más que una persiana, así que he decidido tirar recto y escribir uno de esos posts problema > solución ya que me lo han pedido más de una vez: acabo de cambiar/migrar mi tienda online ¿cómo redirigir las URLs antiguas indexadas en Google a las nuevas?

Fácil, aunque costoso y laborioso según la cantidad de URLs que tengáis indexadas.

Hoy he tenido el placer de ayudar a un usuario del foro de Prestashop que preguntaba sobre Redirigir enlaces antiguos, para no perder seo.

Su problema era que migró de otro sistema de osCommerce a prestashop y tenía muchas URLs antiguas indexadas en Google. Obviamente, no quería perder las visitas que generan estas URLs y se encontraba con que el Webmaster Tools de Google le indicaba que tenía redireccionamientos 301 a estas nuevas URLs que no estaban funcionando.

El código que tenía en su archivo .htaccess era, como él mismo posteó en el foro:

Redirect 301 /antiguaURL http://www.dominio.com/nuevaURL.html

Pues bien, el código que funciona y que el señor Google se come encantado es este:

RewriteCond %{HTTP_HOST} ^www\.dominio\.com$ [NC] RewriteCond %{QUERY_STRING} ^$
RewriteRule ^antiguaURL$ http://www.dominio.com/nuevaURL.html? [R=301,NE,NC,L]

Con este sencillo código le estamos indicando a Google que, para el dominio www.dominio.com, debe redirigir todas las peticiones a www.dominio.com/antiguaURL + cualquier variable que venga detrás (ID, Session ID…) al a http://www.dominio.com/nuevaURL.html + cualquier variable que venga detrás.

Sencillo, laborioso si tienes, por ejemplo 2.000 URLs (tira de excel y concatenación) y muy efectivo de cara al SEO y a no perder ni una visita, ni una conversión 🙂

¿Quieres mejorar el SEO de tu página? Consúltame aquí[/success]

Tweet about this on Twitter0Share on LinkedIn6Buffer this pageEmail this to someone
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (todavía no tiene votos)
Cargando…
52 Responses to Prestashop: redireccionar las antiguas páginas indexadas a las nuevas URLs
  1. Jesus Manuel Lopez Castillo Responder

    Hola
    Me han recomendado esta entrada en tu blog. Me realizaron una migración de Oscomerce a una nueva tienda en Prestashop. En el presupuesto estaba el redicionamiento pero me temo que no lo hicieron. A mediados de julio me “terminaron” la web y la pusieron online (lo pongo entre comillas porque quien la desarrollaba se iba 15 dias de vacaciones y la tuvo que dejar terminada.. a su manera). Me di cuenta de que articulos antiguos siempre me daban error 404 y ellos me dijero que harian el rediccionamiento, así dos veces. Con esto de todo el lio de la web, vacaciones, etc.. a mediados de septiembre investigo en Herramientas de Webmaster y veo que los errores 404 son miles y me bajo el htaccess y no veo redicionamiento por ningun lado. ¿a través de ese grafico de Herramientas de google tambien se puede extraer la misma conclusion?
    En este hilo lo puse por si quieres dar un vistazo:

    http://www.forosdelweb.com/f64/redireccionamiento-realizado-no-1018292/

  2. Carlos Responder

    wow, me he leído 70-80 post sobre 301 porque no lo tengo nada claro, y éste es el mejor, con diferencia, de todos. Estoy migrando una tienda a prestashop y voy a utilizar éste post para el htaccess, ya os cuento. ¿Dónde tienes el botón “invitame a un café”?

    No tengo claro lo de NE,NC, ya que no veo indexadas más que las categorias, paginas cms y productos, sin nada detrás, así que dejaré sólo solo [R=301,L] tiene sentido?

    • jordiob Responder

      Hola Carlos! muchas gracias por tus palabras! 🙂 respecto a lo que comentas, el 301 tiene todo el sentido 🙂

      • Carlos Responder

        Jordi, las 301 funcionan de maravilla, esta es la mejor página de 301 que hay en cualquier idioma, súbela al foro de prestashop y recibirás mucho amor.

        Sólo un detalle para que ya quede incluso mejor, si las modificaciones se realizan dentro de la parte destinada a prestashop en el htacccess, si presta automáticamente regenera el archivo lo pierdes todo, y si las pongo fuera, no me las coge, aunque le añada el loop inicial y el dispatcher.

        ¿Qué harías tu? Hay alguna forma para ponerlo fuera y que las coja, o simplemente meterlo todo dentro y hacer el archivo ¨solo’-lectura¨ o algo para que no se pueda sobreescribir.

        Espero que se entienda el mensaje, cada día me expreso peor. Un saludo!

    • jordiob Responder

      thanks! pues lo que hago es regenerar htaccess desde herramientas > generadores copiando en la caja todo el contenido de 301 😉

  3. itoiz Responder

    buenos dias

    es el mejor post que he visto sobre el tema aunque mi web no tiene todavia prestashop me gustaria implementarlo pronto a partir de una excel con 300.000 producos, como mis conocimientos son basicos no consigo implementarlo ni esto ni el blog ,pero ciñendonos al tema el caso es que
    Hace casi un año instale las pretti url que son mucho mas bonitas eficientes y fáciles de recordar en mi vieja web

    El problema es que hay buscadores que como mi pagina tiene muchos años, siguen redirigiendo a las paginas antiguas y i pierdo visitas dando mala imagen y cada vez estoy mas bajo en las busquedas

    He intentado según esta pagina redirecionar las paginas viejas a las nuevas según esta pagina k son necesarias para mi negocios

    Según tu pagina con esto modificando el .htaccess debería ir

    RewriteCond %{HTTP_HOST} ^www\.dominio\.com$ [NC]
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^antiguaURL$ http://www.dominio.com/nuevaURL.html? [R=301,NE,NC,L]

    Mal adaptado a mi pagina

    RewriteCond %{HTTP_HOST} ^http://www.recitoners.com/index.php?page=contacto-2$ [NC]
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^antiguaURL$ http://www.recitoners.com/index.php?page=contacto-2/http://www.recitoners.com/recitonerscontacto.html? [R=301,NE,NC,L]

    O con la opcion simple

    Redirect 301 / http://www.recitoners.com/index.php?page=contacto-2/ http://www.recitoners.com/recitonerscontacto.html

    Ninguna me va

    Si me puedes echar una mano y decirme donde me he dejado un espacio coma o he metido la pata te lo agradecere

  4. Andres Responder

    Hola, ando liado con el tema de las 301 pero no lo consigo entender, ya he leido todo lo que google me muestra por redireccionamiento 301 en prestashop pero ni asi, me podras echar un cable?.
    Te expongo mi problema, las webmaster me da 2 problemas de Titulo ausente, cuando hago clic me manda a una pantalla en blanco con la URL que de verdad tiene la pagina, imagino que haciendo una 301 se solucionaria pero no soy capaz de entenderlo.

    Para redireccionar la url /index.php?id_product=1049&controller=product‎ a http://XXXXX.com/accesorios-ipad-samsung-galaxy-tab/1049-funda-ipad-2-new-ipad-furgo-azul-funcion-soporte-on-off-callate-la-boca-8426801116344.html

    Como deberia ser la sintaxis?, muchas gracias por adelantado.

  5. Raquel Responder

    Hola,

    he escrito las redirecciones tal y como indicas en tu post pero no reacciona. De momento estoy haciendo pruebas pero mi intención es instalar un prestahop en un dominio donde ya hay una tienda, por tanto, tendré que redirigir las url’s actuales a las nuevas del prestashop, pero manteniendo el dominio.

    Ahora mismo estoy tratando de redirigir una de las categorías a la página de inicio pero no hace nada, he hecho algo mal en el código?

    RewriteCond %{HTTP_HOST} ^server.okisam.com$
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^server.okisam.com\.kenayhome\.6-estancias-de-la-casa$ http://server.okisam.com? [R=301,NE,NC,L]

    Gracias

    • jordiob Responder

      Pues yo veo el código bien!

      • Raquel Responder

        Si, si yo también lo veo bien, pero no reacciona. Lo que trato de hacer (antes de migrar la tienda) es una prueba dentro del prestashop, es decir, estoy intentando que una de las categorías de la tienda en pruebas me la redirija al raíz del servidor.
        Es posible que prestashop esté bloqueando las redirecciones? Es que si esto no funciona como voy a estar segura de que lo hará cuando pase a producción la tienda?

        Gracias por tu respuesta 🙂

  6. cochecitos bebe Responder

    Hola, pudiste solucionarlo?, estoy intentando redireccionar una categoria que tengo indexada a otra pero tampoco me funciona.

  7. ruben Responder

    Si hay que indicar por ejemplo 2000 redirecciones una a una en el htaccess ¿no ralentizaría demasiado la carga de página? si se consiguieran mantener los mismos id de producto y categoria en el cambio de oscommerce a prestashop aun se podría hacer alguna regla pero si tienen id diferentes me temo que hay que ir una a una verdad? y si encima ha indexado url de busquedas ya puede ser la muerte. Tengo un caso de una tienda con 2000 productos a 6 idiomas que cambia de oscommerce a presta, alguna idea milagrosa 🙂 ?

  8. Javier Responder

    Buenas yo tengo un problema es que e cambiado de hosting, y de url. Antes tenia la url http://www.dominio.com/tienda y ahora http://www.dominio.com solo. Y queria saber como se hace para redireccionarla a la nueva url, aunque el otro domino ya no lo tengo activo. Os lo agradeceria muchisimo de verdad por que cada vez que pinchas en un link en los resultados de google te lleva a una pagina 404. Gracias

  9. Carla Responder

    Hola, un artículo estupendo: sencillo y directo pero cargado de contenido. Despues de buscar horas por la red ha sido un alivio encontrar tu post 🙂

    Tengo dos preguntas:

    – Mi .htaccess usa la {ENV.REWRITEBASE}, entonces la cosa me quedaría asi:??

    RewriteRule ^antiguaURL$ {ENV.REWRITEBASE}nuevaURL.html? [R=301,NE,NC,L]

    – Tengo muchos productos, tengo que poner las dos primeras líneas antes de cada una re las redirecciones, asi??

    RewriteCond %{HTTP_HOST} ^www\.dominio\.com$ [NC]
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^antiguaURL1$ {ENV.REWRITEBASE}nuevaURL1.html? [R=301,NE,NC,L]
    RewriteCond %{HTTP_HOST} ^www\.dominio\.com$ [NC]
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^antiguaURL2$ {ENV.REWRITEBASE}nuevaURL2.html? [R=301,NE,NC,L]

    O estas dos se ponen sólo al principio y me quedarías así:

    RewriteCond %{HTTP_HOST} ^www\.dominio\.com$ [NC]
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^antiguaURL1$ {ENV.REWRITEBASE}nuevaURL1.html? [R=301,NE,NC,L]
    RewriteRule ^antiguaURL2$ {ENV.REWRITEBASE}nuevaURL2.html? [R=301,NE,NC,L]
    RewriteRule ^antiguaURL3$ {ENV.REWRITEBASE}nuevaURL3.html? [R=301,NE,NC,L]
    RewriteRule ^antiguaURL4$ {ENV.REWRITEBASE}nuevaURL4.html? [R=301,NE,NC,L]
    RewriteRule ^antiguaURL5$ {ENV.REWRITEBASE}nuevaURL5.html? [R=301,NE,NC,L]

    Te doy las gracias de antemano por tu aporte y por la ayuda que me puedas prestar 🙂

  10. Eduardo White Responder

    Hola Jordi,

    De inicio, darte las gracias por que tu blog me ha ayudado a resolver otras muchas dudas sobre SEO y Prestashop.
    Estoy tratando de corregir varios fallos que tuve al crear la web inicialmente, ya que la hice con los 3 idiomas por defecto (es, gl, ca) y despues de unos dias con las paginas ya indexadas por google, he decidido quitarlas. Con esto no hay mucho problema pues le he hecho una redireccion 301 sobre el archivo .htacces de cada una de los idiomas, a la direccion nueva, tal que así:

    Redirect 301 /es/ http://www.elrincondelpaladar.es/
    Redirect 301 /ca/ http://www.elrincondelpaladar.es/
    Redirect 301 /gl/ http://www.elrincondelpaladar.es/

    y funcionan bien.

    Mi problema viene porque todavia google tiene indexadas direcciones de mi antigua web con Joomla. Creo que el problema viene con los acentos de las URL`s actuales que el archivo .htacces no sabe interpretarlas ya que en este ejemplo, no hace la redireccion:

    Redirect 301 /chorizo-iberico/19-chorizo-iberico-bellota.html http://www.elrincondelpaladar.es/ib%C3%A9ricos/8-chorizo-iberico-de-bellota.html
    He probado a poner el archivo con la direccion asi, con el acento, sin acento, …. pero no me hace la redirección.

    Sabes como puedo arreglarlo?

    Gracias

  11. Isi Responder

    Mi problema es similar al de Eduardo White, activé mi prestashop con 2 idiomas /es/ /ca/
    Tengo configurado solo el español y no quiero que google indexe catalán ni que el usuario entre a catalán.
    Mi idea era dejar la URL con /es/ para no perder indexación pero que no se pueda entrar a /ca/

    Me puedes echar un cable por favor? Cual es la mejor solución?

    Muchas gracias Jordi.

    • jordiob Responder

      hola! por qué no “capas” el /ca/ en el robots.txt?

  12. Isi Responder

    Gracias por tu respuesta.
    No quiero que accedan ni google ni usuarios. Ya hay articulos creados en español pero se puede acceder desde catalán también y eso no quiero que ocurra.

    Sería suficiente con poner lo siguiente?
    .htaccess
    Redirect 301 /ca/ http://www.midominio.es/

    robots.txt
    Disallow: /*ca/

    Muchas gracias!!

  13. jordiob Responder

    Sip, sería correcto el robots, el htaccess:

    RewriteCond %{HTTP_HOST} ^midominio\.es$ [NC]
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^ca/$ http://midominio.es/? [R=301,NE,NC,L]

    • Isi Responder

      Muchisimas gracias Jordi, al poner el código que me indicas en el htaccess, en la home funciona a la perfección, http://www.midominio.com/ca/ redirecciona a http://www.midominio.com/es si pongo una url del tipo http://www.midominio.com/ca/nombre-de-articulo sigue entrando además si despues de esto escribo http://www.midominio.com no me carga la web y chrome me dice que entra en un bucle infinito.

      • jordiob Responder

        ah vale no te había entendido bien! quieres capar del todo el /ca/? porqué no desactivas el idioma directamente? así te ahorras el htaccess.

        Para hacer que todos los /ca/ se vayan al /es/ debes quitar lo que te pasé y poner esto

        Options +FollowSymLinks
        RewriteEngine on
        RewriteRule ^(.*)/ca/(.*)$ $1/es/$2 [R,L]

        • isi Responder

          Muchisimas gracias por tu interes Jordi!!

          He conseguido justo lo que necesitaba probando el texto que comentaba Eduardo White:
          Redirect 301 /ca/ http://www.midominio.com/

          Muchisimas gracias a los dos!!

  14. Jorge Responder

    Hola Jordi, Muchas gracias por la info. Pero, tengo una pregunta.

    Acabo de borrar el catalogo de más de 9000 productos y lo que estoy haciendo es importar de nuevo el catalogo.
    Me he encontrado con el siguiente problema.

    Por ejemplo:

    URL anterior: http://midominio/categoria/34-producto-827160110215.html

    URL actual: http://midominio.es/categoria/26-producto-827160110215.html

    Se ha cambiado el id de producto 34 por 26 y más de 9000 productos ahora tienen otros Números de esos ids.

    Es un gran error ya que hay muchas urls indexadas en google, además muchas urls compartidas en las redes sociales, páginas web etc…

    Entonces como podrá solucionar ese problema?

    (Todas las personas que visitarán la url antigua, se encontrarán con un producto distinto)

    Hacer algo manualmente será imposible ya que son miles de productos.

    Le agradecerá mucho cualquier ayuda.

    Gracias.

    Saludos.

    • jordiob Responder

      hay que meterle caña al htaccess

      Redirect 301 /categoria/34-producto-827160110215.html /categoria/26-producto-827160110215.html

      y así

  15. Jorge Responder

    Entiendo que habrá que añadir esto en el htaccess, Pero no podrá añadir manualmente 6000 urls manualmente. 🙁

    • jordiob Responder

      no conozco forma de hacerlo automáticamente, la verdad

  16. Jesús Diaz Responder

    Hola, en primer lugar, gracias por el aporte. He conseguido pasar todas las direcciones /es/, /ca/, /fr/, /de/ y /it/ a http://www.midominio.com, mediante:
    Redirect 301 /es/ http://www.midominio.com/
    Redirect 301 /ca/ http://www.midominio.com/
    Redirect 301 /de/ http://www.midominio.com/
    Redirect 301 /it/ http://www.midominio.com/
    Redirect 301 /fr/ http://www.midominio.com/

    Mi poblema es que al hacer esta redirección, las url amigables no pasan por la categoria, es decir, si tengo un articulo en http://www.midominio.com/pelotas/pelotade playa, cuando accedo al articulo se queda en http://www.midominio.com/pelotadeplaya. No pone la categoría. ¿Qué estoy haciendo mal?. Gracias.

    • jordiob Responder

      hola! la redirección debería ser

      Redirect 301 /es/ /

  17. LUIS Responder

    Hola, hace una semana indexe mi pagina en google, y como buen novato hice el sitemap con todos los 3 idiomas de prestashop por defecto. Al eliminarlos me da error 401 en todos los enlaces indexados que contienen /ca/ /es/ /gl/. Que me recomiendas que haga puesto que solo hace unos días de la indexación, hay posibilidad de eliminar todo lo indexado y volver hacerlo con un nuevo sitemap sin los idiomas? En caso de tener que modificar el htacces? Me podrías decir como y donde se insertan esas instrucciones?

    • jordiob Responder

      yo eliminaría las páginas a través de Webmaster Tools

  18. LUIS Responder

    Pero son muchísimas las páginas que tengo que eliminar, tengo 700 artículos, y en 3 idiomas que cree el sitemap. Que hago para desindexar todos esos enlaces?

  19. LUIS Responder

    Perfecto. Muchas gracias Jordi.

  20. Jaime Responder

    Hola Jordi, gracias por tus explicaciones. Te planteo un problema que tengo con la esperanza de que me puedas echar un cable.

    He migrado de Joomla a WordPress una web multi-idioma con dos dominios en el mismo alojamiento multidominio compartido y tengo problemas para redireccionar algunas urls que tenían la misma ruta en dos dominios con diferente extensión.

    En la web antigua tenía estas direcciones:
    http://www.dominio.com/news.html
    http://www.dominio.fr/news.html

    Quiero que redirijan a estas nuevas direcciones:
    http://www.dominio.com/category/news/
    http://www.dominio.fr/category/nouvelles/

    El problema para hacer la redirección es que las rutas de origen son iguales y me quedaría así:

    Redirect 301 /news.html http://www.dominio.com/category/news/
    Redirect 301 /news.html http://www.dominio.fr/category/nouvelles/

    Hay alguna forma de usar urls absolutas para que no coincidan las rutas de origen?

    En caso contrario, se te ocurre alguna otra solución?

    Muchas gracias,

    Jaime.

    • jordiob Responder

      hola, haz un htaccess con dominio completo en las URLs o un htaccess para cada dominio (si tienes posibilidad de indicarle de alguna manera al server que, por dominio, coja uno u otro)

  21. Fay Responder

    Hola jordi.
    Tengo una duda y espero su respuesta.
    Quiero cambiar el nombre de una categoría pero se me cambia la url tambien, que debo hacer para no perder esta url indexada?
    Gracias.

    • jordiob Responder

      cambia el nombre de categoría y después modifica la URL

  22. Antonio Esparcia Responder

    Buenas Jordi, he llegado aquí mirando la redirección 301 ya que Prestashop no lo hace bien…

    He escrito esto en el httacces

    RewriteCond %{HTTP_HOST} ^www\.material-electrico\.com$ [NC]
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^antiguaURL$ http://materialelectrico.tienda? [R=301,NE,NC,L]

    Pero cualquier cosa que viene del dominio http://materialelectrico.tienda no va a su ruta correctamente, se queda en el index…

    Gracias.

    • jordiob Responder

      uf, este post está super obsoleto,no me extraña que no funcione

  23. Antonio Esparcia Responder

    Está obsoleto pero..es lo primero que sale en google…actualiza!!! xD

  24. tolo Responder

    Hola,

    perdonadme pero no termino de entender esto,

    en nuestro caso, venimos de opencart a prestashop, por ello quien entre en:

    http://www.dominio.c…?product_id=414

    se redirija a

    https://www.dominio….ocos/focoA.html

    hemos probado con

    RewriteCond %{HTTP_HOST} ^www\.dominio\.com$ [NC]
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^http://www.dominio.c…?product_id=414$ https://www.dominio.com/es/focos/focoA.html [R=301,NE,NC,L]

    pero no funciona, alguien nos puede indicar como hacerlo?

    gracias

    • Jordi Ordóñez Responder

      busca “htaccess wizard” en google, ahí encontrarás un programita para hacerlo 🙂

  25. Webbing Diseño Barcelona Responder

    Muy buen artículo! Hemos pasado de un Magento a un Prestashop con unas 200.000 referencias… el nombre del dominio es el mismo, pero todo lo demás (categorias, etiquetas, productos) cambia de url. Alguna solución efectiva? o se tiene que hacer un excel a manija con todas las urls y luego ponerlas en el .htaccess??

    Gracias!

  26. Josep Responder

    Hola Jordi,
    Regularmente hago redirecciones sencillas en el .htaccess del presta 1.6 siguiendo la fórmula sencilla para reparar errores 404 y son siempre exitosas:

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

    Pero ahora Search Console me marca 3 páginas que dan error 404 y no hay manera de reparalas 🙁 Son:

    module/mailalerts/actions?process=check
    module/mailalerts/actions?process=add
    index.php?controller=404

    ¿Se te ocurre quizás algo que debería probar?
    Mil gracias.

  27. Javier Responder

    hola jordi,

    de php a shopify sería igual?

  28. L.Tuka Responder

    Hola Jordi:
    Tengo un módulo en Prestashop para hacer las redirecciones 301 de los errores de rastreo que van apareciendo en Google Search Control, pero ya tengo unas 3.500 y mi duda es si puedo ir eliminando las redirecciones antiguas del módulo o conviene dejarlas.
    Supongo que tantas redirecciones ralentizan el sitio y no sé si después de unos años, es tontería conservarlas y se pueden ir borrando.
    Gracias de antemano!!

Deja un comentario

Your email address will not be published. Please enter your name, email and a comment.