URL's limpias en PrestaShop 9

La optimización SEO es esencial para cualquier tienda online exitosa. Un aspecto clave es ofrecer URLs amigables, limpias y sin IDs numéricos que no aportan valor para el posicionamiento ni para la experiencia del usuario.

PrestaShop 9.x gestiona las URLs con IDs por defecto, lo cual no es lo ideal para SEO. Este post presenta un módulo gratis para PrestaShop basado en un override avanzado de la clase Dispatcher.php que elimina estos IDs de las URLs de productos, categorías, CMS, fabricantes y proveedores, generando enlaces limpios, claros y totalmente funcionales, adaptados al ecosistema multitienda y multiidioma de PrestaShop.

Tutorial completo: Instalación paso a paso del módulo

¿Qué es y por qué utilizar este módulo gratis para PrestaShop?

El motor de PrestaShop utiliza por defecto URLs que incluyen IDs internos, por ejemplo:

URL con ID (antes)
tusitio.com/productos/15-camiseta-roja.html

Estos IDs no contribuyen al SEO y comprometen la claridad para los usuarios y buscadores. Este módulo gratis para PrestaShop reemplaza la lógica de generación y resolución de URLs para que utilice solo el slug del producto y su categoría, logrando URLs limpias como:

URL limpia (después)
tusitio.com/camisetas/camiseta-roja.html

Al hacerlo, se mejora la experiencia, la confianza del usuario y el posicionamiento SEO.

Características del módulo gratis para PrestaShop

Elimina los IDs de las URLs de productos, categorías, CMS, fabricantes y proveedores
Genera rutas limpias con categorías en la URL del producto
Soporta multi-tienda y multi-idioma correctamente
1 sólo archivo /override/classes/Dispatcher.php
Compatible con PrestaShop 9.x sin modificar el core
Fácil mantenimiento y mejora continua posible

Aspectos técnicos del override Dispatcher.php

Este módulo gratis para PrestaShop sobrescribe las siguientes funciones clave del Dispatcher:

loadRoutes

Redefine las reglas para que las URLs de producto contengan {category}/{rewrite}.html y las de categoría sean {rewrite}, entre otras.

getController
  • Intercepta la URL solicitada y limpia la parte relevante quitando la extensión .html
  • Busca en la base de datos el id_product por slug del producto (última parte del path)
  • Obtiene el ID y el slug de la categoría principal para la URL
  • Define el controlador correcto para cargar la página
  • Usa el controlador padre para manejar otras URLs que no son productos ni categorías

Fragmento esencial para agregar la categoría a la URL del producto:

PHP Dispatcher.php
// En getController, resolución con categoría para producto
$id_product = $db->getValue('SELECT id_product FROM ' . _DB_PREFIX_ . 'product_lang WHERE link_rewrite = ...');

if ($id_product) {
    // Obtener categoría principal del producto
    $id_category = $db->getValue('SELECT id_category_default FROM ' . _DB_PREFIX_ . 'product WHERE id_product = ' . (int)$id_product);
    $category_rewrite = $db->getValue('SELECT link_rewrite FROM ' . _DB_PREFIX_ . 'category_lang WHERE id_category = ' . (int)$id_category . ' AND id_lang = ' . $id_lang);

    $_GET['id_product'] = $id_product;
    $_GET['id_category'] = $id_category;
    $this->controller = 'product';

    return $this->controller;
}

Beneficios para tu tienda

SEO Optimizado

URLs limpias, mejores para motores de búsqueda

Mejor UX

Experiencia de usuario clara y profesional

Multi-idioma

Soporte multiidioma y multitienda sin conflictos

Compatible

Funciona con back-office y enlaces internos

Sin Errores

Evita conflictos con IDs mezclados

Mantenible

Código claro y fácil de extender

Cómo integrar este módulo gratis para PrestaShop

1
Descarga e instala el archivo

Coloca el archivo Dispatcher.php en la ruta /override/classes/ de tu tienda PrestaShop 9.x.

2
Limpia la caché

Borra la carpeta var/cache/prod o var/cache/dev para que el sistema regenere las rutas y aplique los cambios.

3
Verifica los slugs

Revisa que los slugs y categorías estén correctamente definidos en el back office para evitar errores en las URLs limpias.

4
Prueba tu tienda

Visita tu tienda para comprobar visualmente que las URLs aparecen sin IDs y que la categoría está incluida en la URL del producto.

Integrar este módulo gratis para PrestaShop es la forma más sencilla y segura de mejorar el SEO y la experiencia de navegación de tus clientes.

Advertencia Importante

Antes de utilizar este módulo gratis para PrestaShop, asegúrate de revisar que no existan slugs duplicados en tu tienda para:

  • Productos
  • Categorías
  • Páginas CMS
  • Fabricantes
  • Proveedores

Los slugs duplicados provocarán conflictos en la generación y resolución de URLs amigables, afectando el SEO y la experiencia del usuario. Por favor, corrige cualquier slug duplicado antes de subir el archivo Dispatcher para evitar problemas.