Categorías
E-commerce

Tutorial redirecciones 301 en htaccess para PrestaShop

Buenas Prestashoperos! Con este post inauguro la sección e-commerce junto con la etiqueta PrestaShop, ya que desde hace 4 años lucho día a día contra esta plataforma. Día a día, batalla a batalla, intento conseguir lo que me propongo para optimizar PrestaShop ya sea mejorando la velocidad, optimizaciones seo y todas esas cosas… 🙂

En este primer capítulo os voy a contar la primera batalla en la que consistió con las redirecciones 301. Hoy en día, existe una gran cantidad de información sobre redirecciones permanentes, pero muy dispersa, por ello he querido recoger todos los ejemplos que me he encontrado a lo largo de mi particular guerra con PrestaShop.

¿Qué es el fichero htaccess?

El fichero htaccess es un fichero de texto que lleva la voz cantante con los accesos a nuestra web. En el .htaccess podemos implementar diversas funciones como activar compresión de archivos del servidor, bloquear robots maliciosos, controlar acceso a carpetas, crear redirecciones temporales y permanentes, y muchas más cosas.

¿Qué es una redirección?

Una redirección es cuando queremos indicar que hemos cambiado o movido de lugar una URL a otra URL. Existen dos tipos de redirecciones:

  • Una redirección 301 es una redirección permanente, en palabras de calle es cuando te mudas de casa y le dices al cartero que las cartas ya no las envié a tu dirección, si no a la nueva dirección de tu nueva casa. Es decir, todo el tráfico destinado a la URL A se redirigirá a la URL B, así como toda la autoridad y el SEO que pueda tener la URL A.
  • Un redirección 302 es una redirección temporal. Por ejemplo cuando queremos indicar que nuestra web no va a estar disponible por un tiempo.

redireccion 301

Tutorial de redirecciones 301 para PrestaShop

En este tutorial voy a contar las redirecciones permanentes que he utilizado en las diferentes tiendas online de PrestaShop que he trabajado.

Para escribir las redirecciones tendremos que abrir el módulo mod_rewrite.c y escribir todas las redirecciones dentro de este módulo:

<IfModule mod_rewrite.c>



</IfModule>

Redireccionar dominio sin www a www (y viceversa)

Esta redirección es una de las primeras redirecciones a comprobar ya que por defecto PrestaShop no redirecciona la web sin www a www y viceversa por lo que la tienda online estará en el punto de mira del algoritmo Panda de Google por contenido duplicado.

Para evitar este problema, tenemos que crear la siguiente redirección:

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

El código anterior redirecciona la web sin las www a una web con las www.

Si por el contrario queremos redireccionar la web con www a una web sin www, se tendría que copiar el siguiente código en el .htaccess:

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

Redirecciones sencillas

Cuando sólo queremos mover una página a otra dirección por razones como: cambiar el nombre de la url, corregir errores 404 o mover el contenido a otra página; hay que realizar una redirección con la siguiente sintaxis:

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

Hay que tener cuidado con la sintaxis de la redirección ya que la primera URL no contiene el dominio y la segunda si 😉

Eliminar idiomas

Cuando pasamos de tener 2 o más idiomas a uno solo en PrestaShop, tenemos un problema ya que todas las categorías y productos de nuestra tienda estarán indexadas en Google para los dos o más idiomas, por lo que nos queda redireccionar todas las urls indexadas en ingles y castellano y eliminar el idioma de la url.

En este ejemplo, redireccionamos todas las páginas de nuestra tienda en ingles y español a las paginas en español:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /es/[^\ ]+
RewriteRule ^es/(.*)$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /en/[^\ ]+
RewriteRule ^en/(.*)$ /$1 [L,R=301]

Redirecciones categorías

En el caso de querer redireccionar una o varias categorías a otra utilizaremos el siguiente código:

RewriteCond %{HTTP_HOST} ^www.mitienda.com$
RewriteRule ^(categoria-1|categoria-2|categoria-3)/(.*)$ http://www.mitienda.com/categoria-nueva/$2 [R=301,L]

Con este código redireccionaremos el contenido de las categorías 1,2 y 3 a la url de la nueva categoría. Es decir:

  • mitienda.com/categoria-1/ redirecciona a www.mitienda.com/categoria-nueva/
  • mitienda.com/categoria-2/ redirecciona a www.mitienda.com/categoria-nueva/
  • mitienda.com/categoria-3/ redirecciona a www.mitienda.com/categoria-nueva/
  • mitienda.com/categoria-1/subcategoria-1 redirecciona a www.mitienda.com/categoria-nueva/subcategoria-1
  • mitienda.com/categoria-1/miproducto-1 redirecciona a www.mitienda.com/categoria-nueva/miproducto

Pues con esto es todo PrestaShoperos, espero que os sirva de ayuda para vuestros proyectos y si tenéis cualquier duda respecto las redirecciones no dudes en comentar 😉

Si quieres que un especialista lleve el mantenimiento de tu tienda online en PrestaShop, no dudes en ver mi servicio de mantenimiento de PrestaShop o el servicio de SEO en PrestaShop.

Ahora solo queda una última cosa, solo te pido que compartas en las redes sociales este tutorial si no es mucho pedir 🙂

¡Haz clic para puntuar esta entrada!
(Votos: 5 Promedio: 5)

68 respuestas a «Tutorial redirecciones 301 en htaccess para PrestaShop»

Hola David,
Enhorabuena por el post.
Has comentado el caso de redirigir cuando se eliminan los idiomas de Prestashop.
En mi caso quiero pasar de no tener idiomas a añadirlos, y claro las paginas indexadas en google como dominio.com/pagina.html pasaran a ser dominio.com/es/pagina.html

¿En este caso como se debe proceder?

Buenas tardes Javi,

He aquí un problema si añados dos idiomas, pero si solo añades el idioma español, es decir se quedaría las urls dominio.com/es/pagina.html con esta redirección solucionarías el problema:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /es/[^\ ]+
RewriteRule (.*)$ es/$1 [L,R=301]

Cualquier cosa, comentamelo 🙂

Un saludo

Hola!!

muchas gracias por tu tutorial, he podido comprender algunas cosas que me tenían bastante agobiada, sin embargo hay algo que todavía no consigo entender.

Soy nueva en estos temas y a veces se me hace una montaña.

Tengo una tienda y se generaron las url con /en/, /gl/, /ca/. El caso es que he desactivado los idiomas y tampoco quiero que me salga en la url /es/ , de hecho ahora ya no me sale en ninguna dirección de mis productos. Google tiene indexadas todas las otras direcciones y claro, aparece error 404. Las urls de los productos aparecen todas con /es/ y eso es lo que quiero redireccionar.

¿Alguna pista?

Muchísimas gracias por tu tiempo.

Saludos.

Hola Joana,

Tendrás que copiar el siguiente código en el htaccess:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /en/[^\ ]+
RewriteRule ^en/(.*)$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /en/[^\ ]+
RewriteRule ^en/(.*)$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /gl/[^\ ]+
RewriteRule ^gl/(.*)$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /ca/[^\ ]+
RewriteRule ^ca/(.*)$ /$1 [L,R=301]

Cualquier duda, no dudes en preguntar.

Saludos 😉

Hola de nuevo y gracias por tu tiempo!!

En mi htaccess tengo esto exactamente:

«RewriteEngine On
RewriteCond %{HTTP_HOST} ^sanissima.com
RewriteRule (.*) http://www.sanissima.com /$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /es/[^\ ]+
RewriteRule ^es/(.*)$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /en/[^\ ]+
RewriteRule ^en/(.*)$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /gl/[^\ ]+
RewriteRule ^gl/(.*)$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /ca/[^\ ]+
RewriteRule ^ca/(.*)$ /$1 [L,R=301]»

No redirecciona, sólo lo hace de la dirección con «www» a sin «www». Ese mismo códio lo encontré en este mismo artículo.

Por ejemplo, una dirección para el mismo producto:

«http://sanissima.com/2-solgar-n-7-joint-comfort-30cap.html» la que aparece ahora mismo en la web

«http://sanissima.com/es/suplementos-articulaciones-musculatura/2-solgar-n-7-joint-comfort-30cap.html» la que aparece en google.

He quitado también la categoría de la dirección, de hecho en la url de la tienda no me aparece sin embargo me he dado cuenta que en el buscador sí, lo acabo de eliminar, imagino que no será problemático, total… ya está todo patas arriba.

No se que es lo que hago mal.

Muchas gracias de nuevo por tu tiempo.

Un saludo.

Hola de nuevo!!

no he parado de investigar a ver que era lo que estaba fallando y he dado con el error.

No estaba escribiendo las órdenes en la carpeta htaccess oculta sino en una que había creado porque no encontraba esa primera (imagínate si ando perdida en estos temas!!). El caso es que he averiguado como encontrarla, he borrado la que había creado y he copiado las órdenes (para el redireccionamiento de los prefijos de idioma), he tenido que borrar lo primero porque me creaba un error de redireccionamiento y no podía acceder a la web.

He ido a esas direcciones en google y por fin redireccionan correctamente!!

Sobre lo de eliminar las categorías, habría que crear una orden similar? es que no me gusta que las urls lleven tanta cosa.

Muchísimas gracias.

PD: si un día necesitas algo sobre nutrición/nutrición deportiva te pones en contacto conmigo, estaré encantada de atenderte en lo que necesites 🙂

Hola Joana,

No había visto el comentario 🙁

No te he entendido en: «Sobre lo de eliminar las categorías, habría que crear una orden similar? es que no me gusta que las urls lleven tanta cosa.»

Explicamelo un poco más y veo las soluciones que existen.

Saludos 😉

Hola David,

no me había dado cuenta de que me habías respondido.

Lo que he hecho ha sido cambiar como estaba la ruta de la url para un artículo, por ejemplo:

antes: {category:/}{id}{rewrite}.htlm (esto está en Preferencia/Seo+urls de Prestashop

ahora lo he cambiado, la ruta es: {id}-{rewrite:/}{category}.html

para que primero ponga la id, luego el nombre del artículo y luego la categoría. No quiero la categoría antes.

He hecho un montón de experimentos y pruebas varias y no hay manera. No se como redireccionar los casi 800 artículos que tienen la ruta inicial, la que venía por defecto en Prestashop : {category:/}{id}{rewrite}.htlm

En fin.

Gracias por tu paciencia.

Un saludo.

hola, me gustaría saber como hago para crear un redireccionamiento cuando he quitado de las url el ean-13.
Gracias y un saludo;

Hola Magdelis,

Para realizar el redireccionamiento tienes que copiar dichas redirecciones en el fichero .htaccess de tu host, que estará localizado en la raíz del host.

Saludos 😉

Hola, me gustaría saber como puedo hacer para cambiar la url cuando se abre la tienda en formatos móviles. Tengo habilitado el modulo por defecto para movil y lo abre automáticamente, pero he hecho una pagina previa como portada para que se vea antes de entrar a la tienda y necesitaría cambiar la url. Como lo podría hacer? Gracias de antemano

Hola Sandra,

Si he entendido bien, quieres redireccionar a una página X las visitas que vienen desde móvil.

Prueba este código en el fichero htaccess y me comentas:


RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_USER_AGENT} android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-) [NC]
RewriteRule ^$ http://tuwebmovil.com [R,L]

Saludos

Hola, muchas gracias por el artículo. He intentado poner en práctica la redirección desde http:// www. tesorosparticulares. pswebshop. com a http:// tesorosparticulares. pswebshop. com y para ello he puesto en el .htaccess esto:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www. tesorosparticulares. pswebshop. com
RewriteRule ^(.*)$ http:// www. tesorosparticulares. pswebshop. com/$1 [R=301,L]

Pero no funciona, ¿alguna idea?

Gracias y saludos.

Buenas tardes Rosa,

Según lo que me comentas, debería ser así:

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

Pruebalo y me comentas,

Un saludo 😉

hola David, como bien explicas en tu articulo, yo necesitaria quitar el idioma ingles, cuando lo desactivo en la tienda me da error 404 ¿cual seria el codigo?
gracias

Buenas tardes Pedro,

El código sería el siguiente:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /en/[^\ ]+
RewriteRule ^en/(.*)$ /$1 [L,R=301]

Pruebalo y me comentas,

Saludos 😉

Hola David, muy buen artículo y muy interesante!!!

Una duda, no sé si es posible, pero me gustaría cambiar las urls de todos mis productos (son unos 200 y tengo todas las urls «no amigables») cual sería el código para poner en el htaccess?.

Muchas gracias.

Un saludo.

Buenos días Xesca,

Para cambiar todas las urls de tus productos, primero de todo antes de lanzarnos a la plaza a torear 🙂 comprueba que estan indexadas con el siguiente código:

site:tuweb.com en Google

Si te aparecen las urls de tus productos es que estan indexadas, por tanto deberíamos realizar las redirecciones una a una de la url «no amigable» a la nueva url amigable con este código:

Redirect 301 /producto-no-amigable http:// www. mitienda. com/ producto-con-url-amigable

Cualquier consulta, no dudes en preguntar 🙂

Saludos 😉

Hola, quiero quitar los idiomas de la web y solo dejarlo en español. Lo malo es que Google detecta la url con el aynarasecret.es/es/……

Podría hacer algo para no perder el seo ya conseguido?

Hola Robert,

Si eliminas todos los idiomas, la url pasará de aynarasecret.es/es/ a aynarasecret.es por lo tanto tendrás que redigir el contenido a sin /es, de esta forma no perderás nada de posicionamiento.

Un saludo 😉

Hola David, gracias por el artículo.

La verdad es que ando un poco desesperado. He cambiado mi página de dominio y me gustaría capturar un enlace externo que apunta al antiguo dominio www. biobb. es (que está redireccionado al nuevo – www. ecobebes. es) hacia una página, concretamente www. ecobebes. es/52_mooncup-copa-menstrual

En en hosting donde tengo los dominios (que no es donde tengo el server) he redireccionado con una 301 el dominio antiguo hacia www. ecobebes. es/52_mooncup-copa-menstrual pero cuando clicas en el enlace externo redirige a www. ecobebes. es/52_mooncup-copa-menstrual/higiene/higiene-intima.html (añadiendo la coletilla que hace que de un error 404).

Leyendo tu artículo he probado a redirigir ésta última url hacia la correcta en .httacces pero nada:

Redirect 301 52_mooncup-copa-menstrual/higiene/higiene-intima.html http:// www. ecobebes. es/52_mooncup-copa-menstrual

Alguna idea de qué puede estar pasando? Ya no sé que probar 🙁

Gracias desde ya!

Hola Kennet,

Cómo primera opción, prueba a redirigir: Redirect 301 /52_mooncup-copa-menstrual/higiene/higiene-intima.html http:// www. ecobebes. es/52_mooncup-copa-menstrual.

La segunda prueba a añadir esta redirección añadiendo ‘$’ para indicarle que es el final de cadena.

Y la última opción es que existan redirecciones entrelazadas por eso ocurren estos errores de añadir una coletilla.

Ya me dices,

Un saludo

Hola David,

Excelente artículo.
En nuestro caso, queremos redireccionar categorías con URLs con parámetros a nuevas categorías con URLs amigables:

es decir ‘category.php?id_category=1’ -> ‘http: // midominio. com/es/1-categoria-nueva’

No conseguimos dar con ello:

redirect 301 category.php?id_category=1 http: // midominio. com/es/1-categoria-nueva => No funciona

Grcias en todo caso.
Un saludo,
Facun

Buenas Facun,

El caracter ‘?’ es un caracter especial para los servidores apache, hay que escapar este caracter especial utilizando la contra barra delante. Es decir quedaría la redirección de la siguiente manera:

Redirect 301 /category.php\?id_category=1 http: // midominio. com/es/1-categoria-nueva

Ya me dices si te ha funcionado 🙂

Un saludo 😉

Buenos dias, tengo en la web varias paginas que tienen fotos, que en realidad son enlaces a otro servidor, puedo redireccionar esos enlaces a una foto que yo ponga en mi servidor?.

la foto se repite en casi todas mis paginas y es un coñazo tener que cambiar todas las fotos una a una de toda la web.

Buenas tardes Roberto,

Si que se puede, pero deberás tener acceso al otro servidor para realizar las redirecciones. Las redirecciones irán en el otro servidor hacia tu web.

Un saludo

Buenas tardes david,
Puse en el header para arreglar los canonical el siguiente código:
….
{if $page_name == ‘manufacturer’}
getManufacturerLink($smarty.get.id_manufacturer, null, null, null, $id_lang, null, 0, false)}» />
{foreach $languages as $lang}getManufacturerLink($smarty.get.id_manufacturer, null, null, null, $lang.id_lang, null, 0, false)}» />{/foreach}
{/if}
El caso es qeu para categorias ,cms y productos funciona, pero este de fabricantes la herramienta sixtrix me dice que redirije su href a http://dominio.com/__
No sé como se haría para redirigir esta url a la pagina index en el htacess? Seria la mejor solución? Gracias.

Hola David,

Tengo un prestashop y en la url de marcas /marcas/ hay algun enl ace interno a esa url con el guión bajo y la herramienta sistrix dice que no la encuentra y la da como error 404.
Entonces investigando pensaba que hacer una redirección por htacess sería lo mejor, es así?
También me ocurre esto en algún otro sitio.
Gracias. David.

Hola Silvia,

Lo que te refieres es que dentro de tu web, hay enlaces internos hacia /marcas_/ y la URL correcta es /marcas/, es correcto? Si es así realiza una redirección 301 vía htacces a la URL que tengas implementada ya sea /marcas_/ o /marcas/.

Si no es la respuesta correcta, explicamelo que no se si lo entendido muy bien el kit del problema :S

Un saludo y buen fin de semana 🙂

Perdona, se me olvido comentarte,

El codigo es el que te he puesto arriba, en el header de esa url de marcas donde creo que puede ser el fallo, pero lo puse en el header por crear el canonical de la url marcas.

Gracias y espero no haberte liado mucho.

Hola David, me gustaría saber si hay solución para mi caso.

Se trata de un Prestashop 1.6 configurado en mutlitienda con un idioma por tienda.

fr.midominio.com
es.midominio.com

al teclear midominio.com siempre redirige a la tienda predeterminada.

por lo cual tenia pensado agregar redirecciones a subdominio establecidas por idioma de navegador

algo así:

RewriteCond %{HTTP:Accept-Language} (fr) [NC]
RewriteRule .* https: //fr. midominio. com [R,L]

RewriteCond %{HTTP:Accept-Language} (es) [NC]
RewriteRule .* https: //es. midominio. com [R,L]

Y funciona pero el sitio web entra en bucle de re direcciones y creo que al tener multitienda ya crea unas re-direcciones que se escriben automáticamente en el .htacces

este es el .htacces:

# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# http://www.prestashop.comhttp://www.prestashop.com/forums

SetEnv HTTP_MOD_REWRITE On

RewriteEngine on

#Domain: es.midominio.com
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule . – [E=REWRITEBASE:/]
RewriteRule ^api$ api/ [L]

RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

# Images
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule ^([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule ^([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule ^([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule ^c/([0-9]+)(-[.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule ^images_ie/?([^/]+).(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule ^.*$ – [NC,L]
RewriteCond %{HTTP_HOST} ^es.midominio.com$
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]

#Domain: fr.midominio.com
RewriteCond %{HTTP_HOST} ^fr.midominio.com$
RewriteRule . – [E=REWRITEBASE:/]
RewriteRule ^api$ api/ [L]

RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

# Images
RewriteCond %{HTTP_HOST} ^fr.midominio.com$
RewriteRule ^([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^fr.midominio.com$
RewriteRule ^([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^frmidominio.com$
RewriteRule ^([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteCond %{HTTP_HOST} ^fr.midominio.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteCond %{HTTP_HOST} ^fr.midominio.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteCond %{HTTP_HOST} ^fr.midominio.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteCond %{HTTP_HOST} ^fr.midominio.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteCond %{HTTP_HOST} ^fr.midominio.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteCond %{HTTP_HOST} ^fr.midominio.com$
RewriteRule ^c/([0-9]+)(-[.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^fr.midominio.com$
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteCond %{HTTP_HOST} ^fr.midominio.com$
RewriteRule ^images_ie/?([^/]+).(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_HOST} ^fr.midominio.com$
RewriteRule ^.*$ – [NC,L]
RewriteCond %{HTTP_HOST} ^fr.midominio.com$
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]

AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType application/x-font-woff .woff

Header add Access-Control-Allow-Origin «*»

#If rewrite mod isn’t enabled
ErrorDocument 404 /index.php?controller=404

# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again

Por defecto Prestashop 1,6 tiene la función de establecer idioma por idioma de navegador, pero en este caso en multitienda no funciona al tener un idioma por tienda.

Busco esa función que establezca tienda (subdominio) por idioma de navegador pero no logro conseguirlo.

Gracias de antemano.

Hola Javier,

Existen función que de donde detecte la procedencia de la IP, te seleccione el idioma. Pero no he realizado ningún ejemplo de estos.

Si lo encuentras, comentamelo y me lo anoto.

Gracias,

Saludos 😉

Hola David,

en nuestro prestashop tenemos un montón de categorías y subcategorías creadas en su día, pero ahora no se utilizan. Nos molestan mucho para gestionar los productos y asociarlos, ¿nos las podemos cargar así como así o deberíamos redireccionarlas o algo? Muchas son muy antiguas y otras quizás tengan alguna redirección no lo se a ciencia cierta.

Y otra duda que me surge: cuando hacemos una redirección ¿se debe dejar puesta siempre en htacces o al cabo de unas semanas/días se puede eliminar? Tengo entendido que al poco se pueden eliminar para limpiar el archivo pero me da mucho miedo eliminarlas 😛

Muchas gracias!!

Buenas tardes Jairo,

Vamos por puntos:

1.- Si existen muchas categorías, subcategorías, productos, … que tenemos que eliminar, haría lo siguiente: Primero, ver que cantidad de visitas tanto totales como orgánicas han recibido estas URLs que contenien categorías, productos,… si es un número elevado de visitas, redireccionaría a una URL similar. Si no las visitas son casi nulas, desindexaría esta URL siempre y cuando no tenga enlaces entrantes.

2.- Cuando realizamos una redirección, la dejaría ya que esta URL que redirijimos puede contener enlaces entrantes de otros portales por lo que tendrá autoridad, si la eliminamos nos cargaremos esta fuerza entrante desde este enlace.

Un saludo 😉

Hola David, mil gracias por este post, andaba buscando una solución y parece estar aquí. Pero no sé si lo he entendido bien, precisamente quiero eliminar el idioma Inglés y frances de mi web, actualmente sólo está activado Inglés y español, y como es igual google entiende que todas las páginas /es son contenido duplicado… Si desactivo el inglés pierdo el /es…. esntonces si sólo quiero español ¿qué tengo que añadir al htacces lo que pones aquí? ¿y eliminar el idioma inglés y frances?… ¿Así no perdería el posicionamiento conseguido y ya mis páginas serían sin /es y sin /en?

En este ejemplo, redireccionamos todas las páginas de nuestra tienda en ingles y español a las paginas en español:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /es/[^\ ]+
RewriteRule ^es/(.*)$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /en/[^\ ]+
RewriteRule ^en/(.*)$ /$1 [L,R=301]

Buenas tardes Alberto,

Ahora mismo tienes los idiomas /es y /en, si desactivas el idioma /en nos quedaríamos con un solo idioma (en tu caso /es) pero en Prestashop al solo tener un idioma, se elimina el idioma de la URL. Por lo que deberíamos redireccionar todo el contenido de /es y /en a la URL sin el /es y el /en.

Es decir, añadría el siguiente código al .htacces:

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

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

Ya me dices, como ha ido 🙂

Un saludo

Hola David! Enhorabuena por el artículo tan detallado.

Regularmente hago redirecciones sencillas en el .htaccess de mi prestashop siguiendo la fórmula que indicas y son siempre exitosas:
Redirect 301 /antigua-pagina http:// www. mitienda. com/nueva-pagina

Pero 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

¿Me podrias ayudar con esto? ¿Qué crees que debería probar?
Mil gracias.

Hola Josep,

Estas URL’s se han indexado por no se están capando por el robots. Te recomiendo no utilizar redirecciones para estas URL’s y realizar lo siguiente:

1.- Desindexar estas URL’s desde el Search Console
2.- Bloquear por el robots.txt esas URL’s

No te recomiendo redirecciones ya que son URL’s que se han indexado por «error» y así no cargamos el htacccess de redirecciones.

Un saludo 😉

Hola David.

Tengo una duda, una vez pasado el tiempo, ¿cuándo eliminas las redirecciones con total seguridad?
Es que se hicieron redirecciones 301 individuales para cientos de productos no me gustaría tener el htaccess lleno para siempre…

Un saludo

Hola Mario,

Yo las redirecciones las suele eliminar al año, comprobando que no produzcan errores 404.

Un saludo

Hola david, como otros lectores no se de estos temas y tengo la duda de como eliminar mis idiomas catalan y gallego de mi prestashop.
mi web es www. decorartelo. com
Actualmente tengo 3 idiomas :
– castellano
– Catalan
-Gallego.
quiero que solo quede el castellano pero sin la /es.
he leído que tengo que meter este código en htaccess de mi directorio donde tengo la web.

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /en/[^\ ]+
RewriteRule ^en/(.*)$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /en/[^\ ]+
RewriteRule ^en/(.*)$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /gl/[^\ ]+
RewriteRule ^gl/(.*)$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /ca/[^\ ]+
RewriteRule ^ca/(.*)$ /$1 [L,R=301]

pero no se en que linea lo meto.
te escribo exactamente el codigo que tengo en mi htaccess.
Gracias por toda la ayuda que nos prestas.
Un saludo.
Y por cierto ¿tengo que eliminar el idioma castellano o ese no hace falta eliminarlo???

# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution

SetEnv HTTP_MOD_REWRITE On

RewriteEngine on
RewriteRule . – [E=REWRITEBASE:/]
RewriteRule ^api/?(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

# Images
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ – [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]

AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType application/x-font-woff .woff

ExpiresActive On
ExpiresByType image/gif «access plus 1 month»
ExpiresByType image/jpeg «access plus 1 month»
ExpiresByType image/png «access plus 1 month»
ExpiresByType text/css «access plus 1 week»
ExpiresByType text/javascript «access plus 1 week»
ExpiresByType application/javascript «access plus 1 week»
ExpiresByType application/x-javascript «access plus 1 week»
ExpiresByType image/x-icon «access plus 1 year»
ExpiresByType image/svg+xml «access plus 1 year»
ExpiresByType image/vnd.microsoft.icon «access plus 1 year»
ExpiresByType application/font-woff «access plus 1 year»
ExpiresByType application/x-font-woff «access plus 1 year»
ExpiresByType application/vnd.ms-fontobject «access plus 1 year»
ExpiresByType font/opentype «access plus 1 year»
ExpiresByType font/ttf «access plus 1 year»
ExpiresByType font/otf «access plus 1 year»
ExpiresByType application/x-font-ttf «access plus 1 year»
ExpiresByType application/x-font-otf «access plus 1 year»

FileETag INode MTime Size

AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript

#If rewrite mod isn’t enabled
ErrorDocument 404 /index.php?controller=404

# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again

Hola Javier,

Primero tienes que copiar el código por delante de # ~~start~~ Do not remove this comment,

Si quieres eliminar el idioma castellano, tendrás que eliminar y añadir las siguientes lineas:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /es/[^\ ]+
RewriteRule ^es/(.*)$ /$1 [L,R=301]

Un saludo 😉

Saludos David
Disculpa las molestias estoy intentando quitar los idiomas porque me salen muchas paginas duplicadas, tengo activado tres idiomas Español, Catalán y Gallego.
e estado leyendo toda su página y comentarios de otras personas pero es un gran lío para mi intente subir a htaccess lo que recomendaste a otra persona pero nada
Cuando entro en mi web me dice que no se direccional.
Agradecería un aporte que me pueda ayudar
Gracias de antemano por todo.

Hola Manolo,

Puedes ponerte en contacto para obtener más información y solucionar el problema.

Un saludo

Hola Javier, en primer lugar felicitarte por el post me ha servido de gran ayuda en los idiomas, ahora tengo un par de problemas que si te es posible me encantaría que me informaras como solucionarlos, anteriormente tenía mi web formada con zentcart y la pase a prestashop 1.6 en el zentcar tenía un programa que fabricaba urls al hacer una busqueda en el buscador de la web con ello creo unas 12000 urls y ahora quisiera redireccionarlas a mi nueva página web, el caso es que lo que quisiera hacer es decirle que todas las urls que llevan la palabra (búsquedas) http:// www. rialleskids. com/topaz-cybex-busquedas que se redirijan a una nueva url, no sé si esto se puede hacer???, Este url se genero cuando algun visitante puso topaz cybex

El otro problema que tengo es que hace un tiempo que he detectado que mi archivo robots.txt de mi prestashop 1.6 desaparece de mi web cada días, en cuanto lo vuelvo a crear vuelve a desaparecer, he mirado mucho por internet a que puede ser debido y no encuentro nada, te agradecería si puedes ayudarme, mi web es www. rialleskids. com

Un saludo
Filomena.

Hola Filomena,

En primer lugar no soy Javier, soy David 🙂

Respecto al primer tema de búsquedas si que se puede realizar lo que comentas. El segundo tema, quitarles los permisos de escritura y ejecución al robots.txt del host y no pulses la opción de Regenerar Robots.txt del backoffice de Prestashop porque si no se eliminará lo que tengas puesto en el robots.txt.

Un saludo 😉

Hola David, soy como uno de tantos que no entiende mucho del tema, mi problema es el siguiente.

tengo mi web en prestashop 1.6 en idioma español desde hace casi un año con un buen contenido posicionado en google con las url: http: // midominio. com
al querer expandirme e integrar el idioma ingles a mi tienda las url me cambian a http:// midominio. com/es y http:// midominio. com/en afectándome así el posicionamiento de las url en español.
que puedo hacer para que las url en español queden tan cual (http:// midominio. com) para no afectar mi posicionamiento, pero las del idioma nuevo (ingles si quede http:// midominio. com/en

Te agradecería mucho me pudieras ayudar con el tema.

Hola, al usar para eliminar idiomas:

RewriteCond %{THE_REQUEST} ^(GET|HEAD) /es/[^ ]+
RewriteRule ^es/(.*)$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^(GET|HEAD) /en/[^ ]+
RewriteRule ^en/(.*)$ /$1 [L,R=301]

Se dredireccionan bien todos los productos y categorias pero https:// www. dominio. es/es/ no se direcciona a https:// www. dominio. es/ sino que da error 404. Tambien da 404 https:// www. dominio. es/en/ como puedo redireccionar a https:// www. dominio. es/ esas dos urls?
Gracias

Hola Angel,

Primero tienes que activar el SSL en Prestashop y luego introduce estas redirecciones:

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

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https:// www. dominio. es/$1 [R=301,L,NE]

Ya me comentas, 🙂

Saludos 😉

Hola! tengo un pequeño problema que no tengo idea como solucionar. Tengo en un dominio, www. onyxia. com.ar un prestashop 1.5 con mas de 5000 articulos. Muy bien posicionada. El tema, es que tuve que cambiar el dominio, a www. onyxia. pro
Aproveché, y de paso he migrado el 1.5, lo he actualizado a 1.6 y lo cambie de dominio al .pro.
En teoría, las categorias, productos, y demas cosas tienen la misma estructura de urls, por que lo que hice fue duplicar el sitio y actualizarlo.
La pregunta pasa por como armar el htaccess para redireccionar el .com.ar al .pro.

Se supone que tengo que hacer una linea por cada producto?? O al tener la misma estructura con hacer la redireccion del dominio principal alcanza? No logro encontrar info que me ayude a dilucidar este problema.

Gracias!

Buenas tardes Natalia,

No hace falta hacer una linea para cada producto, solamente con esta linea sería suficiente:

RewriteEngine on
Redirect 301 / http:// www. onyxia. pro/

Esta linea debería ir en el .htaccess de onyxia. com.ar

Espero que le sirva de ayuda,

Saludos 🙂

Hola,
Estoy redireccionando todas las categorías de mi prestashop a la home ya que he instalado un filtro y todo el trabajo se realiza en la home salgo las URLs de los productos.

Estoy siguiendo tu post y me da internal server error.

#Redirecciones de categorias
RewriteCond %{HTTP_HOST} ^www.idoctor.es$
RewriteRule ^(fisioterapia)/(.*)$ https:// www. idoctor. es/$2 [R=301,L]

#Redirecciones de categorias
RewriteCond %{HTTP_HOST} ^www.idoctor.es$
RewriteRule ^(traumatologia/(.*)$ https:// www. idoctor.es/$2 [R=301,L]

¿Que debo añadir en .htaccess?
Muchas gracias!!

Buenas tardes Pablo,

Entiendo que quieres redireccionar el directorio «fisioterapia» a la home, verdad?

Prueba lo siguiente y me dices

RewriteCond %{HTTP_HOST} ^www.idoctor.es$
RewriteRule ^fisioterapia/(.*)$ https://www.idoctor.es/ [R=301,L]

Saludos 😉

Buenos días.

En mi web tengo tres idiomas pero sólo quiero quitar el inglés y quedarme con dos, es decir, quiero conservar.

https://www.komsikomsa.com/es/
https://www.komsikomsa.com/fr/

Estoy viendo el código para que mi web quedase sin /es/ /fr/ o /gb/ pero yo lo que quiero es que todas las direcciones de páginas en inglés que contienen /gb/ en la url redireccionen a su correspondiente en español, o a la página de inicio en español.

Por ejemplo, la página de delantales vaqueros en español es:
https://www.komsikomsa.com/es/44-delantales-vaqueros

y en inglés:
https://www.komsikomsa.com/gb/44-denim-apron

No solamente cambia /gb/ sino también el resto de la url.

Supongo que lo más sencillo es redireccionar a la home en español.

¿Cómo podría hacerlo?

Un saludo.

Buenas tardes Marisa,

Si quieres redireccionar a la home toda la versión en ingles es decir la gb, con esto sería suficiente:

RewriteCond %{HTTP_HOST} ^www.mitienda.com$
RewriteRule ^/gb/(.*)$ http:// www. mitienda. com/es/home [R=301,L]

Lo correcto sería redireccionar cada URL de GB a su correspondiente en ES. Se podría hacer mediante una consulta la base de datos. Si lo necesitas, puedes contactarme por el formulario de contacto.

Un saludo

Hola,

He realizado las redirecciones 301 desde una tienda anterior, a mi tienda actual con Prestashop y un diferente dominio,

El caso es que después de subir el nuevo archivo .htaccess con todas las redirecciones, el blog de la tienda no funciona correctamente, los artículos están como bloqueados y no funcionan cuando pulsas sobre ellos para que se abran.

Un saludo

Buenos días Fernando,

Existía una redirección del blog al blog, y generaba redirecciones infinitas en bucle.

Eliminado esa redirección, ya esta solucionado,

Un saludo

Buenos días.

Hace unas semanas hice un cambio de mi web de http a https.
He sufrido una importante disminución de visitas y compras y no sé si es exactamente por esto.
En este caso, ¿tendría que hacer también la redireccion 301?

Saludos y gracias de antemano.

Hola Fernando,

Debes realizar la redirección de http a https y comprobar que este correctamente el https instalado. Puede que no sea eso o si sea eso ya que los usuarios entran a la web y les puede saltar un mensaje de error que no ven la web y se salen de la misma. Dime la dirección de la web para comprobarlo,

Un saludo

Buenas tardes David,

Mi nombre es Jon, me estoy iniciando en Prestashop y navegando he llegado hasta tu sitio web.

Me gustaría saber (sino es mucha molestia) como hacer la siguiente redireción:

https ://www. midominio. com/es/content/11-inicio a https ://www. midominio. com/es/

Redirect 301 /es/content/11-inicio https ://www. midominio.com/es/

Pero entra en un bucle de redirecciones

He probado añadiendo al .htaccess la siguiente directiva:

Espero que puedas ayudar.

Gracias por adelantado

Saludos desde Xàtiva 🙂

Buenos días Jon,

Así como lo tienes debería funcionar, si no prueba lo siguiente:

RewriteEngine on
RewriteRule ^es/content/11-inicio$ https ://www. midominio. com/es/ [L,R=301]

Ya me dices 🙂
Un saludo

Hola david:
He leido todo el post y creo que es uno de los mas gràficos de los que he estado leyendo. A partir de aqui he intentado crear unos redirect 301: Uno ha salido bien y los otros no lo consiguo. Comento:
Tengo mi web prestashop 1.5 antigua, que la podemos llamar http://www.miweb.com. Ahora la he creado de nuevo partiendo desde 0 con prestshop 1.7, y la continuo llamando http://www.miweb.com. La nueva la tengo en local y estoy pendiente de solucionar el tema de las redirecciones para activarla.
La web antigua tiene una url inicial » http://miweb.com/primer-nivel » desde aqui funciona todo.
La nueva web tiene la url inicial https://myweb.com/es
He escrito la siguiente redirección en el .htacces » redirect 301 /primer-nivel https://myweb.com/es » Para hacer la consulta he escrito en la barra del navegadors donde tengo la nueva web en local: » http://miweb.com/primer-nivel » y funciona correctamente apareciendo la nueva direcion https://myweb.com/es . Hasta aqui perfecto.

Ahora lo que quiero es redireccionar paginas y categorias. El formato de la url de la antigua es:
» http://myweb.com/primer-nivel/index.php?option=com_content&view=article&id=62&Itemid=60 »
En la nueva web el formato url de los articulos o categorias es:
» https://myweb.com/es/content/8-pagina-web-nueva »
escribo la siguiente redireccion en .htaccess :
» redirect 301 /primer-nivel/index.php?option=com_content&view=article&id=62&Itemid=60 https://myweb.com/es/content/8-pagina-web-nueva »
Para hacer la consulta he escrito en la barra del navegadors:» http://oficenterlaselva.com/oficenter/index.php?option=com_content&view=article&id=62&Itemid=60 »
Según todo lo que he leido, creo que es correcto. Pero no funciona.
En la barra de direcciones del navegador sale:
» https://myweb.com/es/index.php?option=com_content&view=article&id=62&Itemid=60 »
Como se ve, està url es una mezcla de las dos ( » https://myweb.com/es » – forma parte de la web nueva y » /index.php?option=com_content&view=article&id=62&Itemid=60 » forma parte de la web antigua ) esta direccion no existe y sale error 404.
¿Me puedes incdicar lo que hago mal o si hay otra opción?

¡Muchas gracias David! Me estaba dando mucho problemas aplicar las redirecciones de un ecommerce desde el htaccess y era porque no los estaba aplicando dentro del módulo mod_rewrite.c ¡He seguido tu guía y se ha solucionado! 🙂

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *