Configuración de redirecciones 301 en PrestaShop después de una migración
Entendiendo las redirecciones y por qué la 301 es la única opción correcta
Cuando migras una tienda PrestaShop, las URLs cambian. Los productos que vivían en una dirección ahora viven en otra. Las categorías que tenían un slug ahora tienen uno diferente. Sin redirecciones, cada URL antigua se convierte en un callejón sin salida que devuelve un error 404 tanto a los visitantes como a los motores de búsqueda. El efecto acumulativo es devastador: tráfico perdido, posicionamiento perdido y ventas perdidas.
Una redirección es una instrucción de tu servidor que indica a los navegadores y rastreadores de motores de búsqueda que una página se ha trasladado. Cuando un visitante o Googlebot solicita la URL antigua, el servidor responde con la nueva ubicación y el cliente la sigue automáticamente. Pero no todas las redirecciones son iguales, y usar el tipo incorrecto puede socavar toda tu migración.
301 vs 302: Una distinción crítica
Una redirección 301 señala un traslado permanente. Indica a los motores de búsqueda que transfieran el link equity acumulado (el valor SEO construido a través de backlinks, calidad del contenido e interacción de los usuarios) de la URL antigua a la nueva. Con el tiempo, Google reemplaza la URL antigua en su índice por la nueva. Esto es lo que deseas después de una migración.
Una redirección 302 señala un traslado temporal. Indica a los motores de búsqueda que la URL antigua volverá eventualmente, por lo que deben mantener la URL antigua en el índice y no transferir link equity. Usar redirecciones 302 después de una migración permanente significa que Google sigue intentando indexar tus URLs antiguas, tus nuevas URLs tienen dificultades para ganar autoridad y pierdes posicionamiento innecesariamente.
También existe la redirección 307, que es el equivalente HTTP/1.1 de la 302, y la redirección 308, que es el equivalente HTTP/1.1 de la 301. Para propósitos de SEO en PrestaShop, la 301 es la opción estándar y universalmente soportada.
La regla es sencilla: si la página se ha trasladado permanentemente, usa 301. Después de una migración, la página se ha trasladado permanentemente. Siempre usa 301.
Configuración de redirecciones en .htaccess (Apache)
La mayoría de las instalaciones de PrestaShop funcionan con Apache, y el archivo .htaccess es donde configuras las redirecciones. Este archivo se encuentra en el directorio raíz de tu PrestaShop junto a index.php.
La ubicación importa
El archivo .htaccess de PrestaShop contiene reglas de reescritura que gestionan las URLs amigables, fuerzan HTTPS y dirigen las solicitudes a los controladores correctos. Tus reglas de redirección deben colocarse antes de las reglas de reescritura de PrestaShop. Si las colocas después, las reglas de PrestaShop pueden interceptar la solicitud primero y tus redirecciones nunca se ejecutarán.
Busca la línea de comentario que dice # Dispatcher o el bloque que comienza con RewriteRule ^api. Tus redirecciones personalizadas van por encima de esta sección pero después de RewriteEngine On.
Redirecciones de páginas individuales
La forma más sencilla de redirección mapea una URL antigua específica a una URL nueva específica:
Redirect 301 /categoria-antigua/producto-antiguo.html https://www.ejemplo.com/nueva-categoria/nuevo-producto
La directiva Redirect es parte del módulo mod_alias de Apache. El primer argumento es el código de estado HTTP (301), el segundo es la ruta antigua (relativa a la raíz del documento) y el tercero es la URL nueva completa.
Detalles importantes: la ruta antigua debe comenzar con una barra diagonal y no debe incluir el nombre de dominio. La URL nueva debe ser una URL completa que incluya el protocolo y el dominio. La ruta antigua se compara de forma exacta, incluyendo barras diagonales finales y extensiones de archivo.
Redirecciones basadas en patrones con RewriteRule
Cuando muchas URLs siguen un cambio de patrón predecible, las redirecciones individuales se vuelven poco prácticas. El módulo mod_rewrite de Apache te permite escribir reglas basadas en patrones usando expresiones regulares:
RewriteEngine On
RewriteRule ^categoria-antigua/(.*)$ /nueva-categoria/$1 [R=301,L]
Esta regla captura todo lo que hay después de categoria-antigua/ y lo añade a nueva-categoria/. El $1 es una referencia inversa al primer grupo capturado (la parte entre paréntesis). Los indicadores [R=301,L] especifican una redirección 301 y que esta es la última regla a procesar si coincide.
Escenarios comunes de redirección basada en patrones para migraciones de PrestaShop:
Eliminar extensiones .html:
RewriteRule ^(.+)\.html$ /$1 [R=301,L]
Cambiar de URLs de categorías basadas en ID a basadas en nombre:
RewriteRule ^3-nombre-categoria-antigua(.*)$ /nuevo-nombre-categoria$1 [R=301,L]
Redirigir un subdirectorio completo:
RewriteRule ^tienda/(.*)$ /$1 [R=301,L]
Redirecciones condicionales
A veces necesitas redirecciones que solo se apliquen bajo ciertas condiciones. RewriteCond proporciona esta capacidad:
RewriteCond %{HTTP_HOST} ^dominioantiguo\.com$ [NC]
RewriteRule ^(.*)$ https://www.nuevodominio.com/$1 [R=301,L]
Esto redirige todas las solicitudes de dominioantiguo.com a nuevodominio.com, preservando la ruta. El indicador [NC] hace que la condición no distinga entre mayúsculas y minúsculas.
Para redirigir solo si el archivo solicitado no existe en el nuevo servidor (útil durante una migración gradual):
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ruta-antigua/(.*)$ /nueva-ruta/$1 [R=301,L]
Configuración de redirecciones en Nginx
Si tu PrestaShop funciona con Nginx, las redirecciones se configuran en el archivo de configuración del bloque de servidor, normalmente ubicado en /etc/nginx/sites-available/tudominio.conf o /etc/nginx/conf.d/tudominio.conf.
Redirecciones individuales
location = /categoria-antigua/producto-antiguo.html {
return 301 https://www.ejemplo.com/nueva-categoria/nuevo-producto;
}
El modificador = especifica una coincidencia exacta. Sin él, Nginx trata la ubicación como una coincidencia de prefijo, lo que podría redirigir más URLs de las previstas.
Redirecciones basadas en patrones
location ~ ^/categoria-antigua/(.*)$ {
return 301 /nueva-categoria/$1;
}
El modificador ~ habilita la coincidencia con expresiones regulares. El grupo capturado $1 funciona de la misma manera que en Apache.
Redirecciones basadas en map para listas grandes
La directiva map de Nginx es ideal para gestionar cientos o miles de redirecciones individuales sin saturar el bloque de servidor:
map $request_uri $redirect_target {
/producto-antiguo-1.html /nuevo-producto-1;
/producto-antiguo-2.html /nuevo-producto-2;
/producto-antiguo-3.html /nuevo-producto-3;
}
server {
if ($redirect_target) {
return 301 $redirect_target;
}
}
El bloque map se evalúa solo una vez por solicitud y es altamente eficiente incluso con miles de entradas. Incluso puedes cargar el map desde un archivo externo usando la directiva include.
Recuerda probar tu configuración con nginx -t y recargar con systemctl reload nginx después de cualquier cambio.
Redirecciones masivas con CSV
Para migraciones que involucran miles de productos, escribir reglas de redirección manualmente no es viable. Un enfoque basado en CSV agiliza el proceso.
Creación del CSV
Exporta tus URLs antiguas desde los datos de rastreo previos a la migración o desde la base de datos. Exporta tus URLs nuevas desde la nueva instalación. Emparéjalas en una hoja de cálculo con dos columnas: ruta de URL antigua y ruta de URL nueva. Guarda como CSV.
Tu CSV podría verse así:
/3-categoria-antigua,/nueva-categoria
/categoria-antigua/producto-antiguo-1.html,/nueva-categoria/nuevo-producto-1
/categoria-antigua/producto-antiguo-2.html,/nueva-categoria/nuevo-producto-2
/content/5-sobre-nosotros,/content/sobre-nosotros
Conversión del CSV a reglas .htaccess
Un enfoque sencillo es convertir cada línea del CSV en una directiva Redirect. Usando un editor de texto con buscar y reemplazar o una herramienta sencilla de línea de comandos:
awk -F',' '{print "Redirect 301 " $1 " https://www.ejemplo.com" $2}' redirects.csv >> .htaccess
Esto lee el archivo CSV, divide cada línea por la coma y genera una directiva Redirect para cada línea.
Uso de una tabla de base de datos
Para listas de redirecciones muy grandes (más de 10.000 entradas), considera almacenar las redirecciones en una tabla de base de datos y gestionarlas a nivel de aplicación. Crea una tabla con columnas para la ruta antigua y la ruta nueva, y escribe un pequeño módulo de PrestaShop o un override que intercepte los errores 404, consulte la tabla y devuelva una redirección 301 si encuentra una coincidencia. Este enfoque es más fácil de gestionar a través de una interfaz de administración pero añade una pequeña consulta de base de datos a cada respuesta 404.
Soluciones de redirección basadas en módulos
Varios módulos de PrestaShop proporcionan gestión de redirecciones a través del back office, eliminando la necesidad de editar archivos de configuración del servidor directamente.
Beneficios de las redirecciones basadas en módulos
Un módulo de redirección ofrece una interfaz amigable para añadir, editar y eliminar redirecciones. Normalmente incluye funcionalidad de importación/exportación para operaciones masivas, registro para rastrear qué redirecciones se están utilizando y la posibilidad de que miembros del equipo no técnicos gestionen las redirecciones sin acceso al servidor.
Cómo funcionan las redirecciones basadas en módulos
La mayoría de los módulos de redirección funcionan enganchándose al proceso de manejo de solicitudes de PrestaShop. Cuando llega una solicitud que normalmente resultaría en un error 404, el módulo la intercepta, consulta su base de datos de redirecciones en busca de una URL antigua coincidente y, si la encuentra, envía una respuesta de redirección 301 a la nueva URL.
Algunos módulos van más allá creando automáticamente redirecciones cuando cambias la URL amigable de un producto en el back office. Esto previene el problema común de romper enlaces antiguos cuando optimizas los slugs de tus URLs.
Consideraciones de rendimiento
Las redirecciones basadas en módulos añaden una pequeña sobrecarga a cada solicitud 404 porque deben consultar la base de datos. Para la mayoría de las tiendas esto es insignificante, pero si tienes miles de redirecciones y un tráfico de bots significativo que accede a URLs antiguas, las consultas de base de datos pueden acumularse. Considera usar una capa de caché o mover las redirecciones más utilizadas al .htaccess para un rendimiento óptimo.
Redirecciones Regex: Poder y peligro
Las redirecciones con expresiones regulares son herramientas poderosas que pueden manejar transformaciones complejas de URLs con una sola regla. También son la fuente más común de errores de redirección y bucles infinitos.
Cuándo usar redirecciones Regex
Usa redirecciones regex cuando el cambio de URL sigue un patrón consistente y predecible. Buenos candidatos incluyen: eliminar o añadir extensiones de archivo en todas las URLs, cambiar un prefijo de URL para una sección completa del sitio, eliminar o añadir prefijos de idioma y eliminar parámetros de consulta.
Patrones Regex comunes para PrestaShop
Eliminar el prefijo de ID de categoría que PrestaShop 1.6 añade a las URLs de categorías:
RewriteRule ^([0-9]+)-(.+)$ /$2 [R=301,L]
Esto coincide con URLs como /3-zapatos y redirige a /zapatos.
Añadir un prefijo de idioma:
RewriteCond %{REQUEST_URI} !^/(en|de|fr)/
RewriteRule ^(.+)$ /en/$1 [R=301,L]
Eliminar barras diagonales duplicadas:
RewriteRule ^(.*)//(.*)$ /$1/$2 [R=301,L]
Prueba segura de reglas Regex
Antes de desplegar redirecciones regex en producción, pruébalas exhaustivamente. Usa un probador de regex en línea (como regex101.com) para verificar que tu patrón coincida con las URLs que pretendes y no coincida con las que no debería.
Comienza con una redirección 302 durante las pruebas. Esto evita que los motores de búsqueda almacenen en caché redirecciones incorrectas. Una vez que hayas verificado que la regla funciona correctamente, cámbiala a 301.
Prueba casos extremos: URLs con parámetros de consulta, URLs con caracteres especiales, URLs con múltiples patrones coincidentes. Cada uno de estos puede revelar problemas que no son evidentes con URLs de prueba sencillas.
Prueba de redirecciones
Desplegar redirecciones sin pruebas exhaustivas es una receta para el desastre. Estos son los métodos que debes usar para verificar tus redirecciones antes y después de ponerlas en producción.
Pruebas por línea de comandos con curl
El comando curl es la forma más fiable de probar redirecciones porque te muestra exactamente lo que el servidor devuelve:
curl -I https://www.ejemplo.com/producto-antiguo.html
El indicador -I solicita solo las cabeceras. En la respuesta, busca:
HTTP/1.1 301 Moved Permanently
Location: https://www.ejemplo.com/nuevo-producto
Verifica que el código de estado sea 301 (no 302) y que la cabecera Location apunte a la nueva URL correcta.
Para seguir la cadena de redirecciones y ver cada salto:
curl -IL https://www.ejemplo.com/producto-antiguo.html
El indicador -L le dice a curl que siga las redirecciones, mostrándote las cabeceras en cada paso.
Pruebas masivas
Para listas grandes de redirecciones, automatiza las pruebas con un bucle:
while IFS=, read -r old new; do
status=$(curl -s -o /dev/null -w "%{http_code}" "https://www.ejemplo.com$old")
echo "$old -> $status"
done < redirects.csv
Esto lee tu archivo CSV, prueba cada URL antigua e imprime el código de estado HTTP. Cualquier URL que no devuelva 301 necesita atención.
Pruebas en el navegador
Abre las herramientas de desarrollo de tu navegador (F12), ve a la pestaña Red y navega a una URL antigua. La pestaña Red muestra la cadena de solicitudes, incluyendo todas las redirecciones. Verifica el código de estado, el destino de la redirección y la página final que se carga.
Inspección en Google Search Console
Después del despliegue, usa la herramienta de Inspección de URLs en Google Search Console para verificar cómo Google ve tus URLs redirigidas. Introduce una URL antigua y observa si Google reconoce la redirección y ha descubierto la nueva URL.
Cadenas de redirección y cómo evitarlas
Una cadena de redirección ocurre cuando una redirección lleva a otra redirección, que a su vez puede llevar a otra más. Por ejemplo: la URL A redirige a la URL B, que redirige a la URL C, que finalmente sirve el contenido. Cada salto añade latencia y diluye el link equity.
Por qué las cadenas de redirección son perjudiciales
Google ha declarado que seguirá las cadenas de redirección, pero con límites. Después de un cierto número de saltos (normalmente de 5 a 10), Googlebot se rinde y trata la URL como un error. Incluso para cadenas más cortas, cada salto retrasa la entrega de la página y pierde una pequeña cantidad de link equity.
Para los visitantes, cada redirección añade de 50 a 200 milisegundos de latencia, dependiendo de las condiciones de la red y el tiempo de respuesta del servidor. Una cadena de 3 redirecciones puede añadir medio segundo o más al tiempo de carga percibido.
Causas comunes de cadenas de redirección en PrestaShop
La cadena más común ocurre cuando una migración añade redirecciones sobre redirecciones existentes. Por ejemplo, podrías tener redirecciones antiguas de un cambio previo en la estructura de URLs, y la nueva migración añade otra capa. La URL A redirige a la URL B (de la primera migración), y la URL B redirige a la URL C (de la segunda migración).
Otra causa común es la interacción entre la redirección canónica integrada de PrestaShop y tus redirecciones personalizadas. PrestaShop puede redirigir desde una URL no canónica a la versión canónica, y si tu redirección personalizada también coincide, obtienes una cadena.
La aplicación de HTTPS añade otro salto potencial. Si tu redirección apunta a una URL HTTP, y el servidor luego redirige a HTTPS, eso es una cadena de dos pasos.
Corrección de cadenas de redirección
Audita tus redirecciones regularmente usando una herramienta de rastreo que detecte cadenas. Cuando encuentres una cadena, actualiza la primera redirección para que apunte directamente al destino final. La URL A debe redirigir directamente a la URL C, saltándose la URL B por completo.
Al añadir nuevas redirecciones durante una migración, verifica siempre si la URL de destino es ella misma una redirección. Si lo es, configura la nueva redirección para que apunte al destino final en su lugar.
Errores comunes y cómo evitarlos
Bucles de redirección infinitos
Un bucle infinito ocurre cuando la URL A redirige a la URL B, y la URL B redirige de vuelta a la URL A. El navegador detecta esto y muestra un error ERR_TOO_MANY_REDIRECTS. Las causas comunes incluyen reglas conflictivas en .htaccess (una regla redirige www a non-www mientras otra redirige non-www a www), redirecciones conflictivas entre .htaccess y un módulo de redirección, y reglas regex demasiado amplias que coinciden con sus propias URLs de destino.
Para corregir un bucle, comienza deshabilitando todas las redirecciones personalizadas y vuelve a habilitarlas una por una hasta que el bucle reaparezca. Esto identifica la regla conflictiva.
Olvidar los parámetros de consulta
De forma predeterminada, la directiva Redirect de Apache pasa los parámetros de consulta a la nueva URL. Sin embargo, RewriteRule no pasa los parámetros de consulta a menos que añadas el indicador [QSA] (Query String Append). Si tus URLs antiguas incluyen parámetros de consulta importantes (como ?id_product=123), asegúrate de que se manejen correctamente.
Sensibilidad a mayúsculas y minúsculas
En servidores Linux, las URLs distinguen entre mayúsculas y minúsculas. /Producto.html y /producto.html son URLs diferentes. Si tu sitio antiguo tenía URLs con mayúsculas mixtas y tu nuevo sitio normaliza todo a minúsculas, necesitas redirecciones que manejen ambos casos. Usa el indicador [NC] en RewriteRule para coincidencias sin distinción de mayúsculas.
No redirigir todas las variaciones de URL
Una sola página de producto puede ser accesible a través de múltiples URLs: con y sin barra diagonal final, con y sin extensión .html, con y sin el prefijo de ruta de categoría, con y sin www. Cada variación que fue indexada necesita su propia redirección a la nueva URL canónica.
Dejar las redirecciones en su lugar para siempre
Si bien las redirecciones deben permanecer en su lugar durante al menos 12 meses después de una migración (Google recomienda al menos un año), no deberían permanecer indefinidamente. Después de un año o más, las URLs antiguas ya no deberían aparecer en los resultados de búsqueda ni recibir tráfico significativo. Audita tus registros de redirección, elimina las reglas que ya no se activan y mantén tu configuración limpia.
Resumen
Configurar correctamente las redirecciones 301 es la tarea técnica más importante en una migración de PrestaShop. Cada URL antigua que tenía tráfico, backlinks o visibilidad en motores de búsqueda debe redirigir a su nueva contraparte con un código de estado 301. El método de implementación depende de tu servidor (Apache .htaccess o configuración de Nginx), la cantidad de URLs (reglas individuales, patrones regex o módulos respaldados por base de datos) y las capacidades técnicas de tu equipo. Prueba cada redirección antes de ponerla en producción usando curl o las herramientas de desarrollo del navegador. Vigila las cadenas de redirección, los bucles infinitos y los problemas de sensibilidad a mayúsculas y minúsculas. Monitorea Google Search Console después del despliegue para verificar que Google está procesando correctamente tus redirecciones. Y recuerda que una 302 donde debería haber una 301 nunca es inofensiva. Siempre es la opción equivocada para una migración permanente.
¿Le resultó útil esta respuesta?
¿Aún tiene preguntas?
Can't find what you're looking for? Send us your question and we'll get back to you quickly.