Principales caractéristiques et avantages
- Des URL sans ID selon vos propres modèles — vous décidez vous-même de l’apparence de l’URL pour chaque type de contenu, par ex.
product/nom-du-produitou — après activation des modèles sans préfixe — mêmenom-du-produit.htmldirectement à la racine de la boutique. - Zéro perte SEO lors du changement d’URL — des redirections permanentes 301/308 depuis les URL natives et depuis toute forme d’URL précédente transfèrent le positionnement acquis dans les moteurs de recherche vers les nouvelles URL au lieu de créer des doublons et des erreurs 404.
- Déploiement sûr et réversible — rien ne change dans la boutique tant que vous n’activez pas vous-même le moteur ; auparavant, vous préparez et vérifiez tout en arrière-plan, et le retour en arrière se fait de manière aussi progressive que le déploiement.
- Compatibilité avec les autres modules sans les modifier — la surcharge de la classe Link fait que chaque module récupérant les URL via l’API standard de PrestaShop (flux Google/Facebook, sitemaps, modules exécutés par cron et depuis le back-office) reçoit automatiquement les URL canoniques.
- Gestion automatique des conflits de noms — lorsque deux éléments portent le même nom, le moteur attribue lui-même un suffixe lisible ou un chemin parent ou — si vous le définissez ainsi — attend votre décision ; rien n’est publié à l’aveugle.
- Protection des pages existantes — le module détecte et réserve automatiquement les URL déjà utilisées par PrestaShop lui-même ainsi que par d’autres modules (panier, contact, plan du site), de sorte qu’une URL produit propre ne reprenne jamais une page existante.
- Un panneau compréhensible même pour un non-spécialiste — un tableau de bord avec guide pas à pas, une description pour chaque option, des explications d’état sur chaque onglet ainsi que des messages de diagnostic qui indiquent clairement quoi cliquer et où, y compris des boutons de réparation en un clic.
- Architecture fail-closed — en cas de moindre erreur (registre endommagé, panne du cache, conflit avec une autre modification), la boutique revient immédiatement aux URL natives au lieu d’afficher des erreurs aux clients.
Fonctionnalités en détail
Modèles et construction des URL
- Un modèle d’URL distinct pour chaque type de contenu (produits, catégories, pages CMS, catégories CMS, fabricants, fournisseurs, pièces jointes) dans chaque langue et pour chaque boutique.
- Jetons dans les modèles : nom convivial, chemin complet de catégorie, catégorie parente, fabricant, fournisseur, référence, préfixe de langue et autres — selon le type de contenu.
- Politique globale des chemins : minuscules, caractères ASCII uniquement, slash final, limites de longueur du segment et du chemin complet, contrôle des slugs composés uniquement de chiffres — avec possibilité de surcharge par modèle.
- Modèles sans préfixe fixe (URL directement à la racine) pour PrestaShop 8.1.2 et versions ultérieures, toujours vérifiés par un contrôle préalable.
- Politique des URL des déclinaisons produit : une seule URL canonique commune à toutes les variantes (avec suppression de l’ancre de déclinaison après le signe #) ou conservation du paramètre fonctionnel de variante.
Déploiement progressif et diagnostic
- Cinq modes du moteur : désactivé, observation uniquement, mode parallèle (les anciennes URL redirigent déjà, la boutique affiche encore les liens natifs), actif, ainsi que le mode d’urgence « actif avec fallback natif ».
- Contrôle préalable (preflight) bloquant l’activation jusqu’à ce que toutes les conditions soient remplies : registre complet, validation récente, collisions résolues, tâches terminées, schéma de base correct, hooks enregistrés, absence de conflits de modèles.
- Messages de diagnostic indiquant la cause exacte et l’emplacement de la correction, avec des boutons qui mettent en file d’attente en un clic les reconstructions ou validations manquantes pour les périmètres exacts concernés par le problème.
- Tableau de couverture indiquant pour chaque langue et type de contenu combien d’éléments disposent déjà d’une URL propre, ainsi qu’un rapport d’intégrité du registre.
- Transitions protégées entre les modes — il est impossible de passer accidentellement du mode actif au mode désactivé en contournant la vérification.
Redirections, alias et protection SEO
- Redirections permanentes automatiques des URL natives avec ID vers les URL canoniques (301 ou 308 au choix), en excluant les pages de listing avec paramètres de tri et filtres.
- Historique des URL : chaque modification de l’URL canonique laisse derrière elle une redirection fonctionnelle, de sorte que les favoris, publicités et résultats de recherche ne mènent jamais nulle part.
- Alias manuels et importés avec comme cible un objet de la boutique, n’importe quelle URL (avec politique de sécurité des hôtes : boutique actuelle uniquement, liste de domaines HTTPS autorisés ou tout HTTPS) ou une réponse 410/404.
- Codes de réponse pour les alias : 301, 302, 307, 308 ainsi que 404 et 410 ; les objets supprimés renvoient au choix 410 Gone (retrait plus rapide de l’index) ou 404.
- Les redirections conservent les paramètres de campagne (utm_source, utm_medium, utm_campaign, utm_term, utm_content), les identifiants de clic publicitaire (gclid, fbclid, msclkid) ainsi qu’une liste définie de paramètres fonctionnels.
- Normalisation des requêtes : les variantes d’URL différant par la casse ou le slash final sont redirigées vers une seule forme canonique, sans contenu dupliqué.
- Statistiques optionnelles d’utilisation des redirections avec échantillonnage — vous voyez si quelqu’un utilise encore les anciens liens.
Compatibilité et intégrations
- Surcharge (override) de la classe Link : tous les modules utilisant l’API standard des URL de PrestaShop — y compris les générateurs de flux produits et de sitemaps exécutés depuis le back-office ou par cron — reçoivent les URL canoniques sans aucune modification de leur code, avec retour automatique à l’URL native lorsqu’une URL propre n’est pas disponible.
- API publique pour les développeurs : récupération unitaire et en lot des URL canoniques (avec préchargement du registre pour les générateurs de sitemaps) ainsi que des hooks permettant à d’autres modules de réserver leurs propres chemins et de réagir aux changements de routes.
- Prise en charge complète du multiboutique (configuration, modèles et registre par boutique) ainsi que de plusieurs langues ; dans les anciennes versions de PrestaShop, lorsque le cœur l’exige, le module veille à l’identité des modèles entre les langues.
- Compatibilité : PrestaShop 1.7.x–9.x, syntaxe PHP 7.0–8.5 (dans les limites des exigences du cœur utilisé), MySQL 5.6+/MariaDB 10.x, Apache et Nginx, boutiques en sous-répertoire — sans Composer ni bibliothèques externes.
Automatisation, tâches et performances
- Mise à jour automatique : l’ajout, le changement de nom ou la suppression d’un produit, d’une catégorie ou d’une page actualise lui-même l’URL et met en file d’attente les reconstructions nécessaires, y compris les dépendances (un changement de catégorie actualise les produits, un changement de produit — les pièces jointes).
- Système de tâches en arrière-plan : analyse, aperçu (sans enregistrement), reconstruction, validation, préchauffage du cache, import, export et nettoyage — exécutés par lots configurables, avec pause, reprise, annulation et vidage de toute la file d’attente par un seul bouton.
- Cron en un seul lien : une URL prête à copier avec jeton secret (section Cron dans le panneau, avec instructions et ligne pour crontab) traite automatiquement la file d’attente ; les appels qui se chevauchent sont bloqués ; une interface CLI est également disponible.
- Cache fichier fragmenté des routes (taille de fragment et durée de validité configurables) avec fallback vers la base de données — la résolution des URL ne surcharge pas la base à chaque affichage.
- Journal d’audit des changements d’URL avec rétention configurable ainsi que nettoyage automatique des tâches terminées et des entrées expirées.
- Import d’alias depuis un fichier CSV avec aperçu et validation séparés avant enregistrement (jusqu’à 500 lignes par fichier, enregistrement atomique) ainsi qu’export des paramètres, routes, alias, réservations, collisions et diagnostics en JSON/CSV — sans secrets ni données clients.
Back-office et sécurité
- Un panneau clair avec tableau de bord (métriques du registre), guide repliable « Comment commencer — étape par étape » mémorisant son état, description de l’état de la configuration sur chaque onglet et descriptions pour chaque option.
- Listes des chemins, alias, collisions et tâches avec le filtrage standard de PrestaShop : langue et type d’objet sous forme de listes déroulantes, ID, chemin et slug sous forme de champs texte, avec pagination native.
- Autorisations conformes aux profils employés de PrestaShop (affichage, modification, suppression) appliquées dans le panneau et dans chaque action AJAX.
- Sécurité : jetons et signatures des requêtes d’administration, vérification de l’origine des requêtes, comparaisons de clés résistantes aux attaques temporelles, clé opérationnelle secrète du cron par boutique, normalisation stricte des chemins rejetant les caractères de contrôle et le double encodage.
- Fiabilité : installation transactionnelle avec rollback automatique et restauration de la configuration précédente en cas d’erreur, blocage de la désinstallation lorsque le routage est actif, marqueurs de panne persistants imposant le mode sûr après une erreur critique ainsi que nettoyage complet des tables et de la configuration lors de la désinstallation.
Exigences
- PrestaShop 1.7.0–9.x avec les URL conviviales activées (Paramètres de la boutique → Trafic et SEO).
- PHP 7.0–8.5 (version prise en charge par le cœur PrestaShop utilisé), MySQL 5.6+ ou MariaDB 10.x.
- Aucune dépendance supplémentaire : le module n’utilise ni Composer ni bibliothèques externes.