PrestaShop tiene una particularidad que causa más problemas que cualquier otra cosa en este tema: el archivo .htaccess no es tuyo del todo. Lo genera el back office y lo vuelve a generar cada vez que tocas la configuración de URLs. Si metes tus redirecciones en el sitio equivocado, desaparecen sin aviso y sin dejar rastro en ningún log.
Paso previo: URLs amigables
Antes de redirigir nada, comprueba en Parámetros de la tienda → Tráfico y SEO que las URLs amigables están activas. Con URLs de tipo index.php?id_product=42 no hay redirecciones que valgan: no tienes rutas estables que mapear.
Opción 1: .htaccess, con cuidado
Es la vía directa y la más rápida para un puñado de redirecciones. La sintaxis es la de Apache de siempre:
# Una URL concreta Redirect 301 /categoria-antigua https://tutienda.com/categoria-nueva # Un patrón, con expresión regular RewriteEngine On RewriteRule ^productos-viejos/(.*)$ /catalogo/$1 [R=301,L]
PrestaShop escribe su propio bloque en el .htaccess delimitado por comentarios de inicio y fin, y lo reescribe entero cuando regeneras el archivo desde Tráfico y SEO. Tus reglas tienen que ir fuera de ese bloque. Y después de cada regeneración, vuelve a abrir el archivo y comprueba que siguen ahí.
Hay un segundo aviso importante: esto solo funciona en Apache y LiteSpeed. Si tu alojamiento usa NGINX no hay .htaccess que valga y las reglas tienen que ir en la configuración del servidor, a la que normalmente no tienes acceso desde un hosting compartido.
Opción 2: un módulo de redirecciones
El marketplace de PrestaShop Addons tiene varios módulos para gestionar redirecciones desde el back office. Compensan en tres situaciones concretas, y no antes:
- •Cuando el volumen es alto y necesitas importar un mapa entero en lugar de editar un fichero a mano.
- •Cuando quien mantiene la tienda no tiene acceso FTP ni soltura con Apache.
- •Cuando estás en NGINX y el .htaccess simplemente no existe.
A cambio, una redirección gestionada por módulo se resuelve dentro de PHP, no en el servidor: es algo más lenta y depende de que el módulo siga mantenido. Para reglas estables y de por vida, el .htaccess sigue siendo más robusto.
Multitienda: el error que no se ve
Con varias tiendas en la misma instalación, todas comparten el .htaccess de la raíz. Una regla escrita sin condicionar el dominio se aplica a todas, y acabas redirigiendo en tutienda.fr una ruta que solo debía redirigir en tutienda.es.
# Condiciona cada regla al dominio de su tienda
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?tutienda\.es$ [NC]
RewriteRule ^oferta-antigua$ /promociones [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?tutienda\.fr$ [NC]
RewriteRule ^offre-ancienne$ /promotions [R=301,L]Las cadenas típicas de PrestaShop
| Origen de la cadena | Cómo se resuelve |
|---|---|
| Redirección propia + canónica de PrestaShop | PrestaShop redirige por su cuenta a la URL canónica del producto. Si tu regla apunta a una variante no canónica, se encadenan dos saltos: apunta directamente a la canónica. |
| www y no-www sin unificar | La redirección de dominio se suma a la tuya. Unifica primero www/no-www y http/https en una sola regla, y que las demás apunten ya al formato final. |
| Reglas acumuladas de migraciones antiguas | Cada migración deja su capa. Sigue la cadena desde la URL más antigua y reescribe la primera regla para que apunte al destino actual. |
Comprueba que sobreviven
En PrestaShop hay que verificar dos veces: una al crear las reglas y otra después de cualquier cambio en la configuración de URLs, porque ahí es donde se pierden. Coge las URLs antiguas, sigue la cadena entera y confirma que hay un solo salto hasta el destino final.
Prueba la herramienta gratis
Analiza tus URLs con Comprobador de redirecciones 301 de iRankly. Sin registro, sin tarjeta.
Si usas otra plataforma, o quieres el detalle de cada tipo de redirección: