Documentación de Zeyvro SEO Redirect 301: todas las redirecciones de la tienda gestionadas desde el back office, las que creas tú y las que el módulo detecta solo cuando cambia la URL de un producto o una categoría. Sin tocar el .htaccess, sin cadenas encadenadas y sin dejar 404 detrás de cada cambio de catálogo.
Qué hace el módulo
Gestiona todas las redirecciones de la tienda desde el back office, sin tocar el .htaccess y sin perderlas cuando PrestaShop lo regenera.
- Redirecciones manuales. 301 permanentes, 302 temporales y 303, con listado, filtros y edición.
- Autodetección de slugs. Si cambia el link_rewrite de un producto o una categoría, la 301 se crea sola.
- Cadenas resueltas. Con A→B y B→C, al cambiar C a D el módulo actualiza A→D. Sin saltos encadenados.
- Sugerencias de slug. Al renombrar un producto o una categoría propone la URL nueva y la aplica con la 301 en un clic, de una en una o varias a la vez. Si lo activas en Ajustes, se aplica sola al guardar.
- Bajas de producto. Lista los productos retirados cuya URL sigue viva y los redirige, uno a uno o en bloque, a un destino que buscas por nombre sin tener que saberte el ID.
- Histórico y CSV. Registro de los cambios automáticos, más importación y exportación masiva.
- Barra final. Estricta por defecto: /pagina y /pagina/ son reglas distintas. En modo Indistinta, una misma regla atiende las dos formas.
Instalación
- Back office → Módulos → Gestor de módulos → Subir un módulo.
- Selecciona
zeyvroseoredirect-1.8.6.zipy espera a que termine. - Entra en el menú Zeyvro → SEO Redirects, que el módulo añade al instalarse.
No hay clave que introducir. El módulo se entrega sin DRM: funciona en cuanto se instala, no pide clave de activación ni contacta con ningún servidor de validación.
Pantalla de redirecciones
Menú Zeyvro → SEO Redirects. Una fila por regla, con filtros y orden en todas las columnas.
| Columna | Qué contiene |
|---|---|
| ID | Identificador interno de la regla. |
| URL antigua (ruta) | Ruta de origen. Siempre empieza por /. Ej.: /jabon-afeitar-antiguo.html |
| URL nueva | Destino completo, con http:// o https://. |
| Tipo | 301 permanente · 302 temporal · 303. |
| Origen | manual si la creaste tú, auto si la generó el módulo al cambiar un slug. |
| Fecha | Fecha de creación. |
Crear una redirección
- Pulsa Nueva redirección.
- URL antigua: la ruta antigua, empezando por
/. - URL nueva: la URL de destino completa, con protocolo.
- Elige el tipo (301 por defecto) y guarda. Confirmación: Redirección guardada correctamente.
El botón Volver de la parte superior del formulario de alta y edición devuelve al listado sin guardar.
Borrar
Marca varias filas y usa Eliminar seleccionadas, o borra una desde su propia fila. Eliminar todo elimina todas las redirecciones de la tienda activa: pide marcar una casilla de confirmación y no se puede deshacer, así que exporta el CSV antes.
Importar y exportar CSV
Importar
Botón Importar CSV: elige el fichero y el separador, ; (recomendado) o ,. Al acabar indica cuántas entraron y cuántas se descartaron por duplicadas o mal formadas. El botón Volver cierra el recuadro de importación sin importar nada.
Formato por línea:
old_url;new_url;type
/pagina-vieja.html;https://tutienda.com/pagina-nueva.html;301
La recomendación es escribir el destino completo, con protocolo, igual que en el formulario. La importación además acepta un destino que empiece por /; el formulario del back office no, y exige siempre http:// o https://.
Exportar
Botón Exportar CSV: descarga todas las redirecciones de la tienda activa. El número junto al botón es el total de filas.
Sugerencias de slug
Pestaña Sugerencias, con el número de pendientes entre paréntesis. Aparecen cuando cambias el nombre de un producto o de una categoría pero su URL sigue con el texto antiguo, una por idioma. La columna Tipo indica si es un producto (Producto) o una categoría (Categoría).
- Aplicar: cambia el slug del producto o de la categoría y crea la 301 de la URL antigua a la nueva, en un solo paso.
- Descartar: descarta la sugerencia y deja el producto o la categoría como está.
- En bloque: marca las filas (la casilla de la cabecera las marca todas) y pulsa Aplicar a los seleccionados o Descartar seleccionados. El mensaje indica cuántas se aplicaron o descartaron y cuántas fallaron, con el motivo de cada fallo.
- Volver lleva al listado de redirecciones.
Si prefieres no pasar por esta lista, las sugerencias pueden aplicarse solas al guardar: ver Ajustes.
Bajas de producto
Pestaña Bajas de producto: productos desactivados o que deniegan pedidos cuya URL sigue viva y sin redirección. Evita dejar 404 al retirar referencias.
- Filtros por estado (todos · desactivados · deniega pedidos) y por fabricante.
- Por fila: eliges el tipo de destino —categoría, fabricante o producto—, lo buscas en la caja y pulsas Crear. La fila llega con la categoría por defecto del producto y su fabricante ya puestos, cuando los tiene, y, si la hay, con un enlace para elegir en un clic su categoría madre.
- En bloque: marca varias filas, elige destino (con la misma caja) y tipo (301 o 302) y pulsa Aplicar a los seleccionados.
- La caja de destino autocompleta mientras escribes: el producto se busca por nombre, referencia, EAN13 o ID y se muestra como «#ID · referencia · nombre»; la categoría y el fabricante, por nombre o ID. Salen como máximo 20 resultados, y solo destinos activos. Con el teclado: flechas para moverte, Intro para elegir y Esc para cerrar. Si escribes un número (o «#123») sin elegir de la lista, se toma como ID.
- Un producto sale de la lista en cuanto existe una redirección para su URL actual.
- Volver lleva al listado de redirecciones.
Ajustes
Pestaña Ajustes, con dos apartados: Barra final y Sugerencias de slug (aplicación automática de las sugerencias de slug). Los cambios se guardan con Guardar; Volver lleva al listado.
Barra final
| Opción | Comportamiento | Cuándo usarla |
|---|---|---|
| Estricta (por defecto) | La petición solo coincide con la regla guardada con la URL exacta: /pagina y /pagina/ son reglas distintas. | Tienda con URLs consistentes; máximo control. |
| Indistinta | Una misma regla atiende la URL con barra final y sin ella. | Migraciones desde otra plataforma con ambas formas enlazadas. |
Aplicar sugerencias de slug automáticamente
Dos interruptores, uno para productos y otro para categorías: Aplicar sugerencias de slug automáticamente — productos y — categorías. Los dos están en No por defecto, tanto al instalar como al actualizar desde una versión anterior.
| Opción | Comportamiento |
|---|---|
| No (por defecto) | El cambio espera en Sugerencias hasta que lo apliques o lo descartes. |
| Sí | Al guardar un producto o una categoría con un nombre nuevo y una URL que sigue con el texto antiguo, el módulo pone la URL sugerida y crea la 301 desde la antigua, en cada idioma, sin pasar por la lista. |
- Si en ese mismo guardado cambiaste tú el slug a mano, el módulo no lo sustituye: la 301 de tu cambio se crea como siempre y, si tu slug no coincide con el sugerido, la sugerencia queda en la lista.
- Si la 301 no se puede guardar, el slug se deja como estaba y el cambio queda en la lista de sugerencias.
Cómo funciona por dentro
| Hook | Función |
|---|---|
actionDispatcher | Sirve la redirección en cada petición del front. |
moduleRoutes | Rutas propias del módulo. |
displayBackOfficeHeader | Estilos y scripts del back office. |
actionObjectProductUpdateBefore / …After | Captura el slug del producto antes de guardar, lo compara después y crea la 301. |
actionObjectCategoryUpdateBefore / …After | Lo mismo para categorías. |
Los datos viven en tres tablas propias del módulo: redirecciones, histórico de cambios y sugerencias detectadas.
Cómo se compara la URL
- La comparación es exacta:
_y%de la URL no actúan como comodines. - URLs con parámetros: si
/pagina-vieja.html?utm_source=xno tiene regla propia, sigue la de/pagina-vieja.htmly el destino conserva la query string (…/pagina-nueva.html?utm_source=x, con&si el destino ya tenía una). Primero se busca la URL completa, con su query string, así que una regla que la incluya siempre gana. - Tiendas en subcarpeta (p. ej.
https://dominio.com/tienda/): las redirecciones automáticas se guardan y se comparan relativas a la base de la tienda. - La aplicación automática de sugerencias escribe el slug directamente en la base de datos, así que no vuelve a disparar los hooks de guardado.
Actualización y soporte
- Para actualizar, sube el ZIP nuevo desde Módulos → Subir un módulo: PrestaShop ejecuta la actualización y conserva las redirecciones.
- No desinstales el módulo para actualizarlo: sube el ZIP nuevo encima. Al desinstalar, tus redirecciones no se borran —las tablas se conservan a propósito— pero el módulo deja de servirlas hasta que lo vuelvas a instalar. Lo único que se pierde son los ajustes: al reinstalar, la Barra final vuelve a Estricta y la aplicación automática de sugerencias, a No.
- Desde la 1.7.1 el módulo invalida en OPcache sus propios ficheros al actualizarse y avisa si el hosting no se lo permite.
- Soporte técnico por correo durante 6 meses desde la compra: hola@zeyvro.com.
Solución de problemas
PrestaShop 9.1 dice «no se pudo actualizar» después de subir el ZIP
El aviso es falso: la actualización sí se aplicó, en la base de datos y en el código. Ocurría porque el auto-upgrade del módulo ejecutaba los scripts de upgrade/ en la misma petición en la que PrestaShop 9.1 los vuelve a ejecutar, y el core los marcaba como duplicados. Corregido en la 1.7.2. Al subir precisamente la 1.7.2 desde una versión anterior el aviso todavía puede salir, porque en esa subida el servidor aún ejecuta el código de la versión que tenías; desde la 1.7.2 en adelante ya no aparece.
UndefinedMethodError: trailingSlashMode en la vista Ajustes
Pasa en servidores con OPcache sin revalidación (opcache.validate_timestamps=0): la caché seguía sirviendo la clase principal de la versión anterior mientras el controlador ya era el nuevo. Desde la 1.7.1 el módulo invalida en OPcache solo sus propios ficheros al actualizarse —nunca vacía la caché de toda la tienda—, así que no debería repetirse.
El back office avisa de que el servidor cachea el código anterior
Si el hosting no permite invalidar la caché (función deshabilitada, restrict_api…), la actualización termina bien igualmente y el módulo muestra el aviso «Tu servidor mantiene en caché la versión anterior del código. Si ves errores, pide a tu hosting que reinicie PHP». Desaparece solo en cuanto el servidor sirve ya el código nuevo.
Me rechaza la URL al guardar una redirección
Son dos reglas distintas, cada una con su mensaje. La URL antigua debe empezar por /: el origen es siempre una ruta relativa que empieza por /, no una URL completa. La URL nueva debe empezar por http:// o https://: el destino es siempre una URL absoluta con protocolo. Si el tipo que envías no es 301, 302 ni 303, se guarda como 301.
Al importar el CSV se descartan filas
El contador de descartadas suma las líneas con menos de dos columnas, las que tienen el origen vacío o sin / inicial, y las que tienen el destino vacío o que no empieza ni por http ni por /. Cada línea se lee hasta 2000 bytes: una línea más larga que eso llega cortada y también se descarta. Revisa el separador elegido si se te descarta el fichero entero.
El back office avisa de un error de base de datos
Desde la 1.8.0 cada escritura comprueba si la base de datos la ha guardado: guardar una regla, borrar, aplicar o descartar sugerencias, importar el CSV y guardar los ajustes. Si no se ha guardado, el back office muestra un error («Error de base de datos: el cambio no se ha guardado.», o «No se ha podido guardar la redirección: error de base de datos.» en el formulario) en lugar de confirmar. En la importación, las filas que la base de datos no guarda se cuentan aparte: «%d fila(s) no se han podido importar: error de base de datos.».
PrestaShop 9.1.3 / 9.2.0: la página de categoría o de marca sale cortada
Es un fallo del propio PrestaShop, no del módulo. Pasa también sin el módulo instalado, solo en tiendas en español con el tema por defecto de PrestaShop 9 (Hummingbird); en inglés o con el tema Classic no ocurre. Las redirecciones del módulo funcionan igualmente. Viene de una traducción oficial al español con un «%» de más. Arreglo en 1 minuto: back office → Internacional → Traducciones → Modificar traducciones: Traducciones del Front Office · tema hummingbird · Español. En el dominio Shop › Theme › Catalog, busca «Subcategories for %s» (hoy traducida como «Subcategorías de %s%»), déjala exactamente como «Subcategorías de %s», guarda y borra la caché en Parámetros Avanzados → Rendimiento. Si actualizas el paquete de idioma, comprueba que la corrección sigue ahí.
Historial de versiones
- 1.8.6 · 2026-10-12 — Compatible y probado hasta PrestaShop 9.2.0. Al actualizar, el módulo vacía su propia caché de código (OPcache) para que el servidor no siga usando la versión anterior. Sin funciones nuevas ni cambios de base de datos. Incluye la 1.8.1 a la 1.8.5, que no se publicaron.
- 1.8.0 · 2026-09-25 — Sugerencias de slug también para categorías, con aplicación automática opcional (Ajustes, por defecto No); acciones masivas en Sugerencias; botón Volver en Sugerencias, Bajas de producto, Ajustes, el formulario de redirección y la importación CSV; destino de Bajas de producto con autocompletar. Incluye la 1.7.4 y la 1.7.5, que no se publicaron: tiendas en subcarpeta, comparación exacta de la URL, URLs con parámetros, errores de base de datos visibles en el back office y retirada del motor de licencia, que estaba apagado.
- 1.7.3 · 2026-09-21 — La compatibilidad anunciada pasa a PrestaShop 8.0.0 – 9.1.3, las versiones en las que se ha probado. Sin cambios funcionales ni de base de datos.
- 1.7.2 · 2026-09-12 — Corrige el aviso falso «no se puede actualizar» de PrestaShop 9.1 al subir el ZIP desde el back office.
- 1.7.1 · 2026-09-11 — Al actualizarse, el módulo invalida en OPcache solo sus propios ficheros; si el servidor no lo permite, avisa en el back office.
- 1.7.0 · 2026-09-11 — Nueva vista Ajustes con la opción Barra final (Estricta por defecto, o Indistinta).
- 1.6.2 · 2026-09-10 — Corrección de compatibilidad señalada por el validador oficial de PrestaShop.
- 1.6.1 · 2026-09-10 — Correcciones de compatibilidad señaladas por el validador oficial de PrestaShop.
- 1.6.0 · 2026-09-06 — Nueva sección Bajas de producto: productos desactivados o que deniegan pedidos, con destino por fila o en bloque.
Preguntas frecuentes
¿Sustituye a las reglas del .htaccess?
Para las redirecciones de la tienda, sí: se gestionan desde el back office y no se pierden cuando PrestaShop regenera el fichero.
¿Pide una clave de activación?
No. El módulo se entrega sin DRM: funciona en cuanto se instala y no contacta con ningún servidor de validación. La licencia de uso existe igualmente y la ampara la compra.
¿Por qué me rechaza la URL de origen?
El origen es siempre una ruta relativa que empieza por /; el destino, una URL absoluta con http:// o https://.
¿Mide el efecto SEO de las redirecciones?
No. Crea y sirve redirecciones; no guarda métricas de tráfico ni de posiciones. Esa lectura se hace en Search Console o Analytics.
¿Y en multitienda?
El listado, la exportación y el borrado masivo trabajan sobre la tienda activa.
¿Se pierden las redirecciones al actualizar o al desinstalar?
No. Al actualizar, sube el ZIP nuevo desde Módulos → Subir un módulo y PrestaShop conserva las redirecciones. Al desinstalar tampoco se borran: las tablas se conservan a propósito, aunque el módulo deja de servirlas hasta que lo vuelvas a instalar. Lo único que se pierde son los ajustes: Barra final y aplicación automática de sugerencias.
PrestaShop 9.1 dice que no se pudo actualizar, ¿es cierto?
No: la actualización se ha realizado. Al subir la 1.7.2 desde una versión anterior el aviso aún puede salir; desde la 1.7.2, las siguientes actualizaciones ya no lo muestran.