URLs 404 avec double domaine dans PrestaShop : diagnostic et correction
Résolvez les erreurs 404 avec URLs dupliquées dans PrestaShop. Diagnostic catégorie par défaut, régénération .htaccess et balise canonical correcte.
En bref : Les URLs 404 avec nom de domaine dupliqué dans PrestaShop proviennent généralement de produits ayant la catégorie « Accueil » comme catégorie par défaut. La correction passe par la réaffectation des catégories, la régénération du .htaccess et l'implémentation de balises canonical robustes.
Comprendre le problème : des URLs 404 avec un nom de domaine dupliqué
Vous découvrez dans Google Search Console des URLs indexées au format https://monsite.com/https://monsite.com/ma-categorie/mon-produit.html — le domaine apparaît deux fois, générant des erreurs 404 en masse. Ce problème, fréquent sur PrestaShop, a des causes bien identifiées et des solutions fiables.
Ce type d'anomalie dégrade votre référencement de plusieurs façons : budget de crawl gaspillé, dilution du jus SEO, et signaux négatifs envoyés à Google sur la qualité technique de votre site.
Cause principale : la catégorie par défaut mal configurée
Dans 90 % des cas, ces URLs aberrantes proviennent d'une mauvaise affectation de la catégorie par défaut des produits. Quand un produit a pour catégorie par défaut la catégorie « Accueil » (ID 2 dans PrestaShop), le système génère des URLs malformées car la catégorie racine n'a pas vocation à apparaître dans la structure d'URL.
Vérifier et corriger les catégories par défaut
Sur PrestaShop 8.x :
- Allez dans **Catalogue > Produits**
- Éditez chaque produit concerné
- Dans l'onglet **Catégories**, vérifiez que la « Catégorie par défaut » est bien une catégorie de niveau inférieur, jamais « Accueil »
- Enregistrez
- Allez dans **Paramètres de la boutique > Trafic & SEO**
- Dans la section « Configuration des URL », passez **« URL simplifiée »** sur **Non**
- Cliquez sur **Enregistrer**
- Repassez **« URL simplifiée »** sur **Oui**
- Cliquez à nouveau sur **Enregistrer**
- **Page d'accueil :** Le canonical doit pointer vers `{$base_dir}` sans paramètres
- **Pages produit :** Utilisez `{$link->getProductLink()}` plutôt que de construire l'URL manuellement — cette méthode respecte la configuration multilingue et multiboutique
- **Pages catégorie :** Même logique avec `{$link->getCategoryLink()}`
- **Autres pages :** On nettoie les paramètres GET et les ancres pour obtenir une URL propre
- Allez dans **Pages > Non indexées** ou **Couverture**
- Cliquez sur une URL 404 problématique
- Consultez l'onglet **« Référencé sur »** — il indique les pages qui contiennent un lien vers cette URL cassée
- Un **sitemap.xml** contenant des URLs malformées (à régénérer)
- Des **liens internes** dans des pages CMS ou des widgets
- Un **backlink externe** pointant vers une ancienne URL
- Un **cache Google** qui indexe encore une version corrompue du sitemap
- **Diagnostic** — Lister toutes les URLs 404 dans Search Console et identifier leur source (onglet « Référencé sur »)
- **Catégories** — Vérifier qu'aucun produit n'a « Accueil » comme catégorie par défaut
- **Multiboutique** — Si activé, vérifier la cohérence des catégories racine par boutique
- **Régénération .htaccess** — Basculer URL simplifiée OFF/ON
- **Canonical** — Vérifier la présence et la justesse des balises canonical sur chaque type de page
- **Sitemap** — Régénérer et vérifier l'absence d'URLs malformées
- **Redirections 301** — Créer des redirections pour les URLs indexées qui n'existent plus
- **Suivi** — Surveiller Search Console pendant 4 à 6 semaines pour confirmer la disparition des 404
En masse via SQL (PrestaShop 8.x) :
-- Identifier les produits dont la catégorie par défaut est "Accueil" (id_category = 2)
SELECT p.id_product, pl.name, p.id_category_default
FROM ps_product p
JOIN ps_product_lang pl ON p.id_product = pl.id_product AND pl.id_lang = 1
WHERE p.id_category_default = 2;
Si des produits sont listés, corrigez leur catégorie par défaut manuellement ou par SQL :
-- Exemple : réaffecter à la catégorie 15 (adaptez à votre arborescence)
UPDATE ps_product
SET id_category_default = 15
WHERE id_product IN (SELECT id_product FROM (...) AS tmp);
Attention multiboutique : Si votre installation fonctionne en mode multiboutique, les catégories racine diffèrent par boutique. La catégorie « Accueil » peut avoir un ID différent selon le contexte boutique, ce qui complique le diagnostic. Vérifiez la table
ps_category_shoppour identifier la racine de chaque boutique.
Régénérer le fichier .htaccess
Une fois les catégories corrigées, il faut régénérer le .htaccess pour que les règles de réécriture d'URL reflètent la nouvelle structure.
Procédure sur PrestaShop 8.x
Cette manipulation force PrestaShop à réécrire intégralement le fichier .htaccess avec les règles de redirection à jour. C'est une opération sans risque mais qui doit être faite sur un site en fonctionnement (pas en maintenance).
Vérification manuelle du .htaccess
Après régénération, vérifiez que le fichier .htaccess à la racine contient bien les RewriteRule attendues :
# Exemple de règles générées par PrestaShop
RewriteEngine On
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api(?:/(.*))?$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
# Les règles de réécriture pour les URLs simplifiées
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
Si le fichier est vide ou contient des règles corrompues, la régénération via le back-office est le moyen le plus sûr de le restaurer.
Implémenter la balise canonical correctement
Même après correction des URLs, Google peut mettre des semaines à nettoyer son index. Pour accélérer le processus et éviter toute récidive, il est essentiel d'implémenter une balise canonical robuste sur toutes les pages.
Sur PrestaShop 8.x (natif)
Depuis PrestaShop 1.7.6+, la gestion des canonicals est intégrée nativement. Vérifiez dans Paramètres de la boutique > Trafic & SEO que l'option est bien activée.
Solution Smarty personnalisée (PrestaShop 1.6)
Pour les versions antérieures ou si vous avez besoin d'un contrôle fin, voici une implémentation Smarty robuste à placer dans votre header.tpl :
{* Gestion canonical selon le type de page *}
{if $page_name == 'index'}
<link rel="canonical" href="{$base_dir}" />
{elseif $page_name == 'product'}
<link rel="canonical" href="{$link->getProductLink($product)}" />
{elseif $page_name == 'category'}
<link rel="canonical" href="{$link->getCategoryLink($category)}" />
{else}
<link rel="canonical" href="{$base_dir}{$request_uri|ltrim:'/'|regex_replace:'/[\?#].*/':''}" />
{/if}
Points techniques importants :
Bonne pratique PrestaShop 8.x : Préférez les hooks et modules aux modifications de thème. Créez un module qui se greffe sur
displayHeaderpour injecter vos canonicals personnalisés. Cela survit aux mises à jour du thème.
Analyser l'origine des URLs fantômes dans Google
Avant de corriger, il est crucial de comprendre d'où viennent ces URLs malformées. Dans Google Search Console :
Cette information est précieuse car elle révèle souvent :
Régénérer le sitemap
# Supprimer les sitemaps existants
rm -f sitemap.xml sitemap-*.xml
# Régénérer via le back-office :
# Paramètres de la boutique > Trafic & SEO > Génération du fichier sitemap
Sur PrestaShop 8.x, le module gsitemap gère cette génération. Vérifiez que les URLs générées dans le sitemap sont correctes avant de le soumettre à Google.
Checklist de résolution complète
Questions fréquentes
Tout ce que vous devez savoir sur ce sujet.
Un projet PrestaShop ?
Discutons-en directement.
193 projets livrés
Lire sur le blog

Alexandre Carette
Expert PrestaShop & Architecture E-commerce
Développeur PrestaShop depuis 2014, 193 projets livrés. Je conçois des architectures headless Nuxt + PrestaShop et des outils d'automatisation IA pour les e-commerçants.