SEO PrestaShop: Guía técnica de URLs, Schema, Sitemaps y Core Web Vitals
Guía completa de SEO técnico para PrestaShop — URLs amigables, etiquetas canónicas, hreflang, datos estructurados, sitemaps XML y Core Web Vitals.
El SEO en PrestaShop es configuración, no magia
La mayoría de las tiendas PrestaShop desperdician entre el 30 y el 50 % de su potencial de tráfico orgánico — no por falta de contenido, sino por URLs mal configuradas, etiquetas canónicas ausentes, datos estructurados rotos y desperdicio de rastreo. Esta es una referencia técnica con rutas exactas de configuración, tablas de base de datos y fragmentos de código para cada recomendación.
Una tienda con 10 000 productos y un SEO técnico adecuado superará a un competidor con 50 000 productos y un desorden de URLs duplicadas. Se trata de eliminar barreras, no de trucos.
Estructura de URLs y URLs amigables
Navegue a Shop Parameters → Traffic & SEO → SEO & URLs y active Friendly URL. Esto reescribe las URLs de index.php?id_product=42 a /mens-leather-wallet-42.html. En Apache, PrestaShop genera el archivo .htaccess automáticamente. En Nginx, necesita reglas de reescritura manuales.
Después de activarlo, haga clic en Generate .htaccess file. Si su tienda está en un subdirectorio, verifique que el RewriteBase coincida con su ruta.
Eliminar IDs de las URLs (PS 8+)
En Shop Parameters → Traffic & SEO, busque Route to products y Route to categories:
# Default (with ID)
{category:/}{id}-{rewrite}.html
# Clean URL (no ID) — PS 8+
{category:/}{rewrite}.html
Eliminar los IDs produce URLs más limpias, pero genera un riesgo: PrestaShop resuelve las URLs a través de ps_product_lang.link_rewrite. Si dos productos comparten el mismo slug, el primer resultado gana.
Antes de eliminar los IDs, compruebe si hay slugs duplicados:SELECT link_rewrite, id_lang, COUNT(*) as cnt FROM ps_product_lang GROUP BY link_rewrite, id_lang HAVING cnt > 1;
Corrija todos los duplicados primero, o los productos se volverán inaccesibles.
Buenas prácticas para URLs
- Barras finales: Las categorías terminan con
/, los productos con.html. La consistencia dentro de cada tipo es importante — si tanto/shoescomo/shoes/devuelven 200, tiene contenido duplicado. Imponga un solo patrón con un 301. - Mantenga los slugs cortos: De 3 a 5 palabras.
/mens-leather-wallet.htmlsupera a/mens-genuine-italian-leather-bifold-wallet-brown.html. - Guiones, no guiones bajos: Google trata los guiones como separadores de palabras. PrestaShop hace esto por defecto.
- Nunca cambie URLs activas sin redirecciónes: Use la página SEO & URLs para añadir redirecciónes 301 para las URLs antiguas.
Meta etiquetas y títulos
Cada página en PrestaShop puede tener un meta título y una meta descripción personalizados. Los datos se almacenan por idioma en las tablas _lang:
# Products: ps_product_lang ? meta_title, meta_description, link_rewrite
# Categories: ps_category_lang ? meta_title, meta_description, link_rewrite
# CMS pages: ps_cms_lang ? meta_title, meta_description, link_rewrite
# Static pages: ps_meta_lang ? title, description, url_rewrite
Si un producto no tiene un meta título personalizado, PrestaShop recurre al nombre del producto — “Classic T-Shirt” genera <title>Classic T-Shirt</title>, sin incluir la marca ni el nombre de la tienda.
Patrones de meta títulos
Google muestra aproximadamente entre 50 y 60 caracteres. Coloque las palabras importantes al principio y el nombre de la tienda al final:
# Product: Primary Keyword - Key Feature | Store Name
# Category: Category Name - Differentiator | Store Name
# CMS: Page Topic - Store Name
Meta descripción
Las meta descripciones no afectan directamente al posicionamiento, pero influyen considerablemente en la tasa de clics. Google muestra aproximadamente 155 caracteres en escritorio y 120 en móvil. Incluya una llamada a la acción, mencione el precio o la disponibilidad, y evite duplicados entre productos.
Si tiene miles de productos y no puede redactar meta descripciones individuales, déjelas vacías en lugar de rellenarlas con texto genérico. Google generará automáticamente un fragmento del contenido de la página, lo cual suele ser más relevante que un texto estándar.
Actualizaciones masivas de meta datos
Para catálogos grandes, utilice SQL para establecer meta títulos basados en plantillas. Una ps_product_lang con ps_category_lang en la categoría predeterminada y CONCAT() del nombre del producto con el nombre de la categoría. Siempre ejecute un SELECT primero para previsualizar y siempre haga una copia de seguridad antes de actualizaciones masivas.
URLs canónicas
PrestaShop genera etiquetas canónicas automáticamente a través del archivo head.tpl del tema. Los productos se canonizan a la URL base del producto, las categorías a la base sin filtros. Esto maneja los duplicados comunes, pero persisten varios problemas:
- Paginación:
/wallets/?page=2y/wallets/?page=3son indexables por defecto. Cada página páginada debe autocanonicalizarse. Usenoindexen las páginas profundas si no desea que se posicionen individualmente. - Ordenación:
?order=product.price.asccrea duplicados indexables. Bloquéelos con robots.txt o noindex. - Navegación por facetas: Los parámetros de filtro generan una explosión combinatoria. Bloquee las URLs de filtros en robots.txt Y añada noindex a las páginas filtradas.
- Producto en múltiples categorías: PrestaShop canoniza a la categoría predeterminada — este es el comportamiento correcto.
Google dejó de utilizar rel="prev"/rel="next" en 2019. Concéntrese en las etiquetas canónicas y noindex para el control de la páginación.
Canónicas en multitienda
Cada tienda debe canonizar a su propio dominio — nunca entre dominios, a menos que una tienda sea intencionalmente subordinada. PrestaShop maneja esto correctamente cuando las tiendas tienen dominios separados. Consulte nuestra guía de multitienda para más detalles.
Hreflang para tiendas multilingües
Si su tienda sirve múltiples idiomas, hreflang le indica a Google qué versión mostrar en cada mercado. Sin estas etiquetas, Google elige una versión y suprime las demás.
<link rel="alternate" hreflang="en" href="https://shop.com/en/wallet.html">
<link rel="alternate" hreflang="fr" href="https://shop.com/fr/portefeuille.html">
<link rel="alternate" hreflang="x-default" href="https://shop.com/en/wallet.html">
Utilice códigos de idioma-país (en-GB, en-US) cuando tenga precios o contenido específicos por región. Utilice códigos solo de idioma (en, fr) en los demás casos. Incluya siempre x-default para la opción predeterminada.
Errores comunes con hreflang
- Etiquetas de retorno ausentes: La página A apunta a B, pero B no apunta de vuelta a A. Google ignora ambas.
- Códigos incorrectos:
en-UKes incorrecto (correcto:en-GB). Utilice ISO 639-1 para el idioma e ISO 3166-1 Alpha 2 para el país. - Hreflang en URLs no canónicas: Si una página tiene una canónica que apunta a otro lugar, su hreflang se ignora.
- Hreflang con noindex: Las páginas con noindex no pueden ser destinos de hreflang.
Verifique con el validador de hreflang de TechnicalSEO.com. Una sola etiqueta de retorno rota invalida todo el grupo para esa página.
Para multitienda con dominios separados por idioma, el hreflang entre dominios requiere modificar head.tpl para consultar ps_shop_url y construir URLs por tienda — la configuración predeterminada solo cubre los idiomas dentro de una misma tienda.
Datos estructurados / Schema.org
Los datos estructurados permiten resultados enriquecidos — valoraciones con estrellas, insignias de precio e indicadores de disponibilidad en los resultados de búsqueda. Los temas de PrestaShop incluyen un esquema básico de Product, pero a menudo está incompleto.
Esquema de producto
Cada página de producto necesita un esquema completo de Product + Offer. Los campos mínimos que Google requiere para resultados enriquecidos: name, image, price, priceCurrency, availability. Si falta alguno, los resultados enriquecidos no se activarán. Incluya sku, brand y aggregateRating cuando estén disponibles.
En los temas clásicos, el esquema de producto se encuentra en templates/catalog/product.tpl o en un parcial como _partials/microdata/product-jsonld.tpl. En Hummingbird (PS 8+/9.x), revise templates/catalog/_partials/product-details.tpl. Las implementaciones varían según el tema.
Esquemas BreadcrumbList y Organization
Las migas de pan en los resultados de búsqueda muestran la jerarquía del sitio. El módulo de migas de pan de PrestaShop debería generar automáticamente JSON-LD de BreadcrumbList — verifique con Rich Results Test. Añada el esquema Organization a todo el sitio mediante el hook displayHeader con el nombre de su empresa, URL del logotipo, información de contacto y enlaces a redes sociales.
Esquema FAQ y JSON-LD personalizado
Las páginas CMS con contenido de preguntas y respuestas pueden utilizar el esquema FAQPage para fragmentos expandidos. Para cualquier tipo de esquema que su tema no cubra, inyecte JSON-LD mediante el hook displayHeader: detecte el tipo de controlador, construya el array del esquema y genérelo con json_encode() envuelto en una etiqueta <script type="application/ld+json">.
Valide siempre los datos estructurados con la prueba de resultados enriquecidos de Google. Un esquema incompleto es peor que no tener esquema — indica baja calidad.
Sitemap XML
PrestaShop incluye el módulo Google Sitemap (gsitemap). Confígurelo en Modules → Module Manager. Incluya productos, categorías y páginas CMS. Excluya los proveedores a menos que tengan valor de cara al cliente. El módulo genera sitemap.xml en la raíz, dividiéndolo en múltiples archivos para catálogos grandes.
Automatice la regeneración con un cron diario que llame a modules/gsitemap/gsitemap-cron.php con su clave segura. Envíelo a Google Search Console y monitorice el informe de cobertura. Para multitienda, cada tienda obtiene su propio sitemap con el dominio de esa tienda automáticamente.
Un sitemap es una sugerencia, no una garantía. Incluya únicamente URLs canónicas e indexables que realmente desee posicionar. Nada de productos desactivados, páginas filtradas ni URLs de carrito o pago.
Robots.txt
Genere el robots.txt desde Shop Parameters → Traffic & SEO → Robots file generation. La configuración predeterminada bloquea los directorios de administración, pero no cubre patrones importantes. Añada lo siguiente además de los valores predeterminados:
# Block shopping flow (no SEO value)
Disallow: /cart
Disallow: /order
Disallow: /my-account
Disallow: /search
# Block filtered/sorted duplicates (crawl budget killers)
Disallow: /*?order=
Disallow: /*?q=
Disallow: /*&order=
Disallow: /*&q=
Sitemap: https://your-domain.com/sitemap.xml
Bloquear los parámetros de filtro evita el rastreo de páginas duplicadas combinatorias, ahorrando presupuesto de rastreo para las páginas reales de productos y categorías.
robots.txt bloquea el rastreo, no la indexación. Si un sitio externo enlaza a una URL bloqueada, Google aún puede indexarla sin rastrearla. Para una verdadera desindexación, utilice meta etiquetasnoindexo cabecerasX-Robots-Tag.
SEO de imágenes
Las imágenes de productos generan un tráfico significativo a través de Google Images. PrestaShop genera automáticamente las etiquetas alt a partir del nombre del producto y reescribe los nombres de archivo basándose en link_rewrite. Configure la plantilla de texto alt en Shop Parameters → Traffic & SEO — considere añadir la categoría o la marca al patrón predeterminado.
Formatos modernos: PS 8+ soporta WebP, PS 9.x añade AVIF. Actívelos en Design → Image Settings, establezca la calidad en 80-85 y regenere las miniaturas. Carga diferida: los temas modernos añaden loading="lazy" debajo del pliegue. Nunca aplique carga diferida a la imagen principal del producto — es su elemento LCP. Sitemap de imágenes: el módulo gsitemap puede incluir imágenes de productos para ayudar a Google a descubrir imágenes que no se encuentran mediante el rastreo habitual.
Core Web Vitals
Las Core Web Vitals son un factor de posicionamiento confirmado. PrestaShop tiene patrones específicos que causan fallos.
CLS (Layout Shift) — Objetivo: inferior a 0,1
Causas comunes en PrestaShop: imágenes sin atributos width/height, fuentes web que provocan FOUT (corrija con font-display: swap + precarga), banners cargados por JS que empujan el contenido hacia abajo (corrija con min-height en CSS), y barras de consentimiento de cookies insertadas en el flujo del documento en lugar de usar posicionamiento fijo o sticky.
LCP (Largest Contentful Paint) — Objetivo: inferior a 2,5 s
En las páginas de producto, el LCP es la imagen principal del producto. Comprima de forma agresiva, use WebP/AVIF y precargue con <link rel="preload" as="image" fetchpriority="high">. Nunca aplique carga diferida a la imagen LCP. Si el TTFB del servidor supera los 1,5 s, ningún truco de frontend le salvará — consulte nuestra guía de rendimiento.
INP (Interaction to Next Paint) — Objetivo: inferior a 200 ms
Cada módulo que se engancha a displayHeader/displayFooter añade JS que bloquea el hilo principal. Los scripts de terceros (analítica, chat, píxeles) deben cargarse con defer/async o mediante Tag Manager. Mida los datos de campo de CWV en PageSpeed Insights — si el INP de campo es malo pero el de laboratorio está bien, los scripts de terceros son la causa probable.
Velocidad de página para SEO
Para un análisis profundo sobre optimización de servidor, caché e infraestructura, consulte nuestra guía de optimización del rendimiento. Estos son los factores de velocidad críticos para el SEO:
CCC (Combine, Compress, Cache)
Active todas las opciones en Advanced Parameters → Performance. CCC reduce las peticiones HTTP de 20-40 a 3-5 para CSS/JS, ahorrando a menudo de 1 a 2 segundos en la primera visita.
Carga de fuentes
Aloje sus fuentes localmente (elimina la búsqueda DNS a fonts.googleapis.com), use font-display: swap, precargue la fuente principal del cuerpo con <link rel="preload" as="font" type="font/woff2" crossorigin> y realice un subset para eliminar rangos de caracteres no utilizados.
Estrategia de JS en módulos
Los módulos deben registrar JS con 'attributes' => 'defer' en sus llamadas a registerJavascript(). El JS con defer/async permanece separado de los bundles de CCC (por diseño), pero no bloquea el renderizado. Revise el código de los módulos que usan la posición bottom sin defer.
Enlazado interno
La estructura de categorías ES su arquitectura de enlazado interno. Cada página de categoría es una página potencial de posicionamiento para un grupo de palabras clave.
Jerarquía de categorías
Estructure las categorías para que coincidan con la intención de búsqueda: “Shoes” apunta al término principal, “Mens Running Shoes” apunta a la cola larga. Una categoría plana con 1 000 productos desperdicia la oportunidad de posicionar para docenas de palabras clave específicas. El árbol de categorías de PrestaShop crea automáticamente una jerarquía de enlaces a través de las migas de pan y los menús de navegación.
Migas de pan
Asegúrese de que las migas de pan aparezcan en todos los tipos de página. Cuando un producto existe en múltiples categorías, PrestaShop usa la categoría predeterminada para la ruta de migas de pan. Establezca la categoría predeterminada de cada producto como su categoría relevante más específica.
Venta cruzada
Los accesorios y productos relacionados crean enlaces internos entre páginas de productos — distribuyendo la autoridad de enlace mientras aumentan el valor medio del pedido. Configure en Catalog → Products → Associated products. No permita que las páginas CMS queden huérfanas — enlace las guías de tallas y las políticas de envío desde las descripciones de productos relevantes.
Control de indexación
No todas las páginas deben indexarse. Permitir que Google indexe miles de URLs filtradas diluye el presupuesto de rastreo.
Navegación por facetas
Una categoría con 5 colores, 8 tallas y 4 rangos de precio genera 160 URLs filtradas — por categoría. Multiplique por 100 categorías y tendrá 16 000 páginas casi duplicadas. La solución:
- Bloquee los parámetros de filtro en robots.txt (evita el rastreo)
- Añada
noindexa las páginas filtradas (evita la indexación si se rastrean) - Canonice las páginas filtradas a la categoría base (consolida las señales)
Excepción: las combinaciones de filtros que coinciden con consultas de búsqueda reales (“black leather wallets”) deben indexarse con meta datos únicos. Bloquee todo lo demás.
Estrategia de páginación
- Canónicas autorreferenciadas en cada página páginada.
- Noindex en páginas profundas: Las páginas 4 en adelante rara vez tienen valor SEO. Manténgalas como seguibles para que Google descubra los productos enlazados.
- Aumente los productos por página: Mostrar 48 en lugar de 12 por página reduce la páginación de 17 páginas a 5, concentrando la autoridad de enlace.
Errores comunes de SEO en PrestaShop
Página de inicio duplicada
La página de inicio suele ser accesible en /, /index.php, /en/ y /en/index.php. Redirija index.php a la raíz con un 301:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]
Normalización de WWW y HTTPS
Elija www o sin www, elija HTTPS. Redirija todo lo demás con un 301 de un solo salto. La configuración “Enable SSL” de PrestaShop solo afecta a la generación de enlaces — debe añadir redirecciónes a nivel de servidor en .htaccess. El orden importa: fuerce HTTPS primero, luego la normalización de www. Compruebe las cadenas de redirección con curl -I -L — cada salto adicional añade latencia y pierde autoridad de enlace.
Otros problemas frecuentes
- Duplicados de la página 1 de categorías: Tanto
/shoes/como/shoes/?page=1devuelven 200. Redirija?page=1a la URL base. - Descripciones de productos copiadas: Si importa descripciones del proveedor, todos los demás también lo hacen. Redacte descripciones únicas al menos para el 20 % de sus productos con mayor facturación.
- Categorías vacías: Las categorías activas con cero productos son contenido pobre. Consulte
ps_categoryunido con unCOUNTsobreps_category_productpara encontrarlas y aplicarles noindex o eliminarlas. - Meta títulos ausentes: Consulte
ps_product_langpara las filas dondemeta_titleestá vacío — estos productos dependen del nombre del producto como su etiqueta de título.
Lista de verificación de auditoría SEO
Realícela trimestralmente o después de cualquier cambio importante en la tienda.
Base técnica
- URLs amigables activadas — ninguna URL
index.php?id_product=en Google. - SSL activado y forzado — todas las peticiones HTTP redirigen con 301 a HTTPS.
- Normalización de WWW — redirección de un solo salto, sin cadenas.
- Robots.txt bloquea administración, carrito, pago, búsqueda y parámetros de filtro.
- Sitemap XML generado, actualizado y enviado a Search Console.
On-Page
- Meta títulos únicos en cada producto y categoría, menos de 60 caracteres.
- Meta descripciones únicas o intencionalmente vacías — sin duplicados estándar.
- Un H1 por página que coincida con el tema de la página.
- Todas las imágenes de productos tienen texto alt descriptivo.
- Etiquetas canónicas presentes en cada página, correctas bajo páginación.
- Etiquetas hreflang correctas si es multilingüe: bidirecciónales, con x-default presente.
Datos estructurados
- El esquema de producto se valida en Rich Results Test con name, image, price y availability.
- Esquema BreadcrumbList presente en páginas de producto y categoría.
- Esquema Organization presente en todo el sitio.
Rastreabilidad
- Informe de cobertura de Google Search Console — sin errores inesperados ni páginas excluidas.
- Las URLs filtradas no se multiplican en el índice de Google.
- Ninguna categoría vacía indexada.
- Sin errores 404 suaves (productos agotados que devuelven 200 con contenido vacío).
Rendimiento
- Core Web Vitals aprobadas en datos de campo (Search Console → Core Web Vitals).
- Sin errores de usabilidad móvil.
- Páginas de producto con menos de 3 s de tiempo de carga. Consulte nuestra guía de rendimiento.
Herramientas recomendadas
Google Search Console (indexación, CWV, rendimiento), Screaming Frog (rastreo de sitios, gratuito hasta 500 URLs), PageSpeed Insights (datos de laboratorio y de campo de CWV), Rich Results Test (validación de datos estructurados), Ahrefs Webmaster Tools (auditoría técnica gratuita + backlinks).
El SEO no es algo que se configura y se olvida. Las actualizaciones de temas rompen el esquema, los nuevos módulos añaden bucles de redirección y las importaciones crean meta datos duplicados. Una revisión trimestral de 30 minutos detecta problemas antes de que le cuesten tráfico.
More guides available
Browse our knowledge base for more practical PrestaShop tutorials, or reach out if you need help.