[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"alexandrecarette-hero-data":22,"megamenu":29,"megamenu-contexts-ac-hub":107,"$fP0FV7zZkQhZStJelKMQF2vnI2nbZQB210etjzdyGslw":109,"$fWKdfDz02FtiVsTmMs4MFQZ7qfEYBpZ9BI0uIVF4zKFU":169,"footer-db":174,"header-db":194,"$fh5fdrvpq2mAZPchJd_PzJMbUCxNAgaaLdNpxO6nRTQo":206,"$fGoFe6pV9yOI_fKSEZDfdQvfMFVzieLT_GAZOzH608X8":209,"i18n-alternates-_root-fr":25,"$fjATNips40nFVdnkxaxF_uB_gZebBFxIthNAECFoKgjs":223,"$f5Nk7xKpB6jFqQe0DBXdBItFeTy2fBHdExdP-ToOu7cs":227,"$fDR16fsa0f7wbWEXJZWn1ubgOeHPkRrhu67pt9rk0wUk":297,"$frQjqGx5Wi4I7a4hbAgGJjG7RV0hMc9Q2c9rjMAbEYio":298},{"theme":4},{"colors":5,"typography":13,"ui":17,"defaultColorMode":21},{"primary":6,"secondary":7,"background":8,"foreground":9,"muted":10,"headerBg":11,"footerBg":12,"topBarBg":9,"topBarText":11},"#4F46E5","#0D9488","#F9FAFB","#111827","#6B7280","#ffffff","#020617",{"fontFamily":14,"fontUrl":15,"baseFontSize":16},"Inter, system-ui, sans-serif","https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Inter:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,700;0,800;0,900;1,400;1,700&display=swap","16px",{"borderRadius":18,"contentWidth":19,"shadow":20},"lg","7xl",true,"light",{"capa":23,"malt":26,"legal":27,"links":28},{"state":24,"trimester":25,"missionsOpen":25,"missionsMax":25,"nextTrimester":25},"fallback",null,{"url":25,"rating":25,"reviewsCount":25},{"siret":25,"status":25,"city":25},{"linkedin":25,"github":25},{"items":30},[31,42,50,58,66,74,83,91,99],{"id":32,"type":33,"label":34,"href":36,"icon":25,"iconRole":37,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":38,"position":39,"barVisible":20,"children":40,"psChildren":41},41,"link",{"fr":35},"Expertise","\u002Fexpertise","picto",false,0,[],[],{"id":43,"type":33,"label":44,"href":46,"icon":25,"iconRole":37,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":38,"position":47,"barVisible":20,"children":48,"psChildren":49},42,{"fr":45},"Blog","\u002Fblog",1,[],[],{"id":51,"type":33,"label":52,"href":54,"icon":25,"iconRole":37,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":38,"position":55,"barVisible":20,"children":56,"psChildren":57},43,{"fr":53},"Méthode","\u002Fmodules",2,[],[],{"id":59,"type":33,"label":60,"href":62,"icon":25,"iconRole":37,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":38,"position":63,"barVisible":20,"children":64,"psChildren":65},49,{"fr":61},"Modules gratuits","\u002Fmodules-libres",3,[],[],{"id":67,"type":33,"label":68,"href":70,"icon":25,"iconRole":37,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":38,"position":71,"barVisible":20,"children":72,"psChildren":73},44,{"fr":69},"Outils IA","\u002Foutils-ia",4,[],[],{"id":75,"type":33,"label":76,"href":78,"icon":25,"iconRole":37,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":79,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":38,"position":80,"barVisible":20,"children":81,"psChildren":82},45,{"fr":77},"Tarifs","\u002Ftarifs",{"highlight":20},5,[],[],{"id":84,"type":33,"label":85,"href":87,"icon":25,"iconRole":37,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":38,"position":88,"barVisible":20,"children":89,"psChildren":90},46,{"fr":86},"Academy","\u002Facademy",6,[],[],{"id":92,"type":33,"label":93,"href":95,"icon":25,"iconRole":37,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":38,"position":96,"barVisible":20,"children":97,"psChildren":98},47,{"fr":94},"À propos","\u002Fa-propos",7,[],[],{"id":100,"type":33,"label":101,"href":103,"icon":25,"iconRole":37,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":38,"position":104,"barVisible":20,"children":105,"psChildren":106},48,{"fr":102},"Contact","\u002Fcontact",8,[],[],{"contexts":108},[],{"columns":110},[111,122,148,161],{"title":112,"position":47,"links":113},"Plateforme",[114,115,118,119],{"label":77,"href":78,"external":38},{"label":116,"href":117,"external":38},"Devenir Ambassadeur","\u002Fambassadeur",{"label":53,"href":54,"external":38},{"label":120,"href":121,"external":20},"CodeMyShop (open-source)","https:\u002F\u002Fcodemyshop.com",{"title":123,"position":55,"links":124},"Le Synedre",[125,128,131,134,137,140,142,145],{"label":126,"href":127,"external":38},"L'histoire","\u002Fsynedre",{"label":129,"href":130,"external":20},"Constitution","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconstitution",{"label":132,"href":133,"external":20},"L'équipe","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fagents",{"label":135,"href":136,"external":38},"Le réacteur en direct","\u002Freacteur",{"label":138,"href":139,"external":20},"Le Drill (entraînement)","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fdrill",{"label":141,"href":133,"external":20},"Les agents IA",{"label":143,"href":144,"external":20},"La Conduite","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconduite",{"label":146,"href":147,"external":20},"Charte plateforme","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fcharte",{"title":149,"position":63,"links":150},"Ressources",[151,152,153,155,158],{"label":45,"href":46,"external":38},{"label":86,"href":87,"external":38},{"label":154,"href":36,"external":38},"Expertise PrestaShop",{"label":156,"href":157,"external":38},"Flywheel","\u002Fflywheel",{"label":159,"href":160,"external":38},"Manifeste","\u002Fmanifeste",{"title":94,"position":71,"links":162},[163,165,168],{"label":164,"href":95,"external":38},"Alexandre Carette",{"label":166,"href":167,"external":20},"Dossier de presse","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fpresse",{"label":102,"href":103,"external":38},{"tree_loaded":20,"found":38,"kind":170,"id":25,"path":171,"path_fr":171,"pilier_slug":171,"pilier_slug_fr":171,"slug":171,"name":171,"description":171,"meta_title":171,"meta_description":171,"breadcrumb":172,"children":173},"category","",[],[],{"footer":175},{"theme":176,"description":25,"hours":25,"logo":177,"contact":180,"social":181,"bottomBar":191,"newsletter":192},"dark",{"src":178,"href":179,"alt":164},"\u002Flogo-ac.svg","\u002F",{"email":25,"phone":25,"address":25,"cta":25},[182,185,188],{"platform":183,"href":184,"label":183},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":186,"href":187,"label":186},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":189,"href":190,"label":189},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":25},{"show":38,"title":25,"description":25,"placeholder":25,"ctaLabel":25,"consentText":193},"J'accepte de recevoir par e-mail les actualités de CodeMyShop et d'Alexandre Carette : nouveaux modules libres, astuces PrestaShop, SEO et performance. Je peux me désinscrire à tout moment grâce au lien présent dans chaque message.",{"header":195},{"logo":196,"topBar":199,"contactEmail":202,"contactPhone":25,"features":203,"navBar":25,"headerLinks":205,"storesHref":25},{"src":178,"alt":197,"text":164,"href":179,"class":198},"Alexandre Carette — Architecte E-commerce Souverain","h-10 w-10",{"message":25,"messageMobile":25,"showLanguages":38,"align":200,"languages":201},"left",[],"contact@alexandrecarette.fr",{"showSearch":38,"showWishlist":38,"showLogin":20,"showContact":38,"showCart":38,"showQuoteButton":20,"showBlogLink":38,"showContactLink":38,"showGiftcardLink":38,"showStoresLink":38,"stickyHeader":20,"staticHeader":38,"headerLayout":204},"inline",{},{"ok":20,"alternates":207},{"fr":208},"\u002Fblog\u002Fdevops\u002Fmethode\u002Fchanger-nom-domaine-prestashop-redirections-301",{"tree_loaded":20,"found":20,"kind":170,"id":210,"path":211,"path_fr":211,"pilier_slug":212,"pilier_slug_fr":212,"slug":213,"name":53,"description":214,"meta_title":215,"meta_description":216,"breadcrumb":217,"children":222},571,"devops\u002Fmethode","devops","methode","Méthode DevOps, workflows, gouvernance.","Méthode DevOps — Blog Alexandre Carette","Méthode DevOps : workflows Git, gouvernance, rituels, cicatrices.",[218,221],{"id":219,"slug":212,"path":212,"label":220},557,"DevOps",{"id":210,"slug":213,"path":211,"label":53},[],{"academy":224,"blog":225,"expertise":226},[],[],[],{"id":228,"canonicalInnerPath":229,"indexable":20,"title":230,"h1":231,"category":212,"categoryName":53,"pillarName":220,"subcategory":213,"slug":232,"coverImage":233,"thumbnailImage":233,"content":234,"visuels":235,"faq":236,"metaDescription":282,"active":20,"datePublished":283,"dateUpdated":283,"readingTime":284,"mentor":25,"alternates":285,"langsWithContent":286,"audioEnabled":38,"audioUrl":171,"author":288},118,"devops\u002Fmethode\u002Fchanger-nom-domaine-prestashop-redirections-301","Changer de domaine PrestaShop : checklist SEO et 301","Changer le domaine d'une boutique PrestaShop : checklist SEO et redirections 301","methode--changer-nom-domaine-prestashop-redirections-301","\u002Fblog-covers\u002F0deae2c5f8c6.webp","\u003Ch2>1. Cartographie d'architecture et audit des routes d'URLs avant bascule\u003C\u002Fh2>\n\u003Cp>Changer le nom de domaine principal d'une boutique PrestaShop en production constitue l'une des opérations d'ingénierie les plus délicates pour un site marchand. Lorsqu'une boutique opère depuis cinq ans, son empreinte dans les index des moteurs de recherche repose sur un maillage complexe de pages indexées, de paramètres d'URL, de métadonnées canoniques et de backlinks accumulés. Procéder à une migration sans avoir dressé un inventaire exhaustif et mathématique de chaque route expose immédiatement votre infrastructure à une perte d'équité de liens et à une chute brutale de trafic organique.\u003C\u002Fp>\n\u003Cp>La première étape consiste à extraire l'intégralité des routes actives directement depuis la base de données relationnelle MySQL ou MariaDB, plutôt que de vous fier à un simple crawl externe qui omettrait les URLs orphelines, les facettes non maillées ou les routes profondes. Les tables \u003Ccode>ps_product_lang\u003C\u002Fcode>, \u003Ccode>ps_category_lang\u003C\u002Fcode>, \u003Ccode>ps_cms_lang\u003C\u002Fcode> et \u003Ccode>ps_meta\u003C\u002Fcode> fournissent la vérité terrain sur les identifiants et les réécritures d'URLs. Lors de la structuration de votre plan de redirection, vous devez isoler chaque gabarit pour valider le comportement du contrôleur frontal et des règles de réécriture. Par exemple, sur une référence précise comme le \u003Ca href=\"\u002Fvetements\u002Fhommes\u002Fhummingbird-printed-t-shirt-1\">t-shirt imprimé colibri\u003C\u002Fa>, l'identifiant numérique et le slug textuel doivent converger sans ambiguïté vers la nouvelle adresse.\u003C\u002Fp>\n\u003Cp>De la même façon, les sections mères et les têtes de rayon comme le \u003Ca href=\"\u002Fvetements\u002Fhommes\u002F\">catalogue de vêtements pour hommes\u003C\u002Fa> ou les rayons de \u003Ca href=\"\u002Faccessoires\u002Fpapeterie\u002F\">fournitures de papeterie\u003C\u002Fa> concentrent un historique de positionnement considérable. Si ces pages changent de FQDN (Fully Qualified Domain Name) sans une correspondance stricte de leurs paramètres de pagination et de tri, l'arborescence descendante perd instantanément son autorité thématique. L'extraction initiale doit également isoler les routes personnalisées définies dans le module de réécriture ou le fichier \u003Ccode>routes.yml\u003C\u002Fcode> de votre thème afin de ne laisser aucune route applicative sans correspondance explicite.\u003C\u002Fp>\n\n\u003Ctable>\n  \u003Cthead>\n    \u003Ctr>\n      \u003Cth>Typologie d'URL PrestaShop\u003C\u002Fth>\n      \u003Cth>Structure canonique native\u003C\u002Fth>\n      \u003Cth>Code HTTP attendu\u003C\u002Fth>\n      \u003Cth>Criticité SEO\u003C\u002Fth>\n      \u003Cth>Vérification technique requise\u003C\u002Fth>\n    \u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd>Fiche produit unitaire\u003C\u002Ftd>\n      \u003Ctd>\u002Fid-categorie-slug-produit.html\u003C\u002Ftd>\n      \u003Ctd>301 Moved Permanently\u003C\u002Ftd>\n      \u003Ctd>Haute\u003C\u002Ftd>\n      \u003Ctd>Conservation des déclinaisons d'attributs et des paramètres de tracking\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Catégorie de catalogue\u003C\u002Ftd>\n      \u003Ctd>\u002Fid-slug-categorie\u003C\u002Ftd>\n      \u003Ctd>301 Moved Permanently\u003C\u002Ftd>\n      \u003Ctd>Critique\u003C\u002Ftd>\n      \u003Ctd>Préservation de la pagination et des facettes de filtrage\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Page éditoriale CMS\u003C\u002Ftd>\n      \u003Ctd>\u002Fcontent\u002Fid-slug-cms\u003C\u002Ftd>\n      \u003Ctd>301 Moved Permanently\u003C\u002Ftd>\n      \u003Ctd>Moyenne\u003C\u002Ftd>\n      \u003Ctd>Cohérence des ancres textuelles et des liens internes sortants\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Module et contrôleur custom\u003C\u002Ftd>\n      \u003Ctd>\u002Fmodule\u002Fnom_module\u002Fcontroleur\u003C\u002Ftd>\n      \u003Ctd>301 Moved Permanently\u003C\u002Ftd>\n      \u003Ctd>Haute\u003C\u002Ftd>\n      \u003Ctd>Maintien des endpoints de callback et des flux de données externes\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Flux médias et images\u003C\u002Ftd>\n      \u003Ctd>\u002Fid_image-format\u002Fnom-produit.jpg\u003C\u002Ftd>\n      \u003Ctd>301 Moved Permanently\u003C\u002Ftd>\n      \u003Ctd>Moyenne\u003C\u002Ftd>\n      \u003Ctd>Éviter la rupture d'indexation dans Google Images et les proxies CDN\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003Ch2>2. Mise à jour de la base de données PrestaShop : ps_shop_url et ps_configuration\u003C\u002Fh2>\n\u003Cp>L'erreur la plus répandue consiste à tenter de modifier le nom de domaine exclusivement depuis l'interface d'administration de PrestaShop (Préférences > SEO & URLs). Si le cache mémoire ou le cache opcode est actif, cette action via l'interface graphique peut déclencher une déconnexion immédiate de votre session administrateur tout en laissant les tables de configuration dans un état intermédiaire incohérent. Pour garantir une exécution atomique, la mise à jour doit être réalisée directement en ligne de commande SQL, après avoir figé les écritures applicatives et généré un dump physique de sauvegarde.\u003C\u002Fp>\n\u003Cp>PrestaShop s'appuie sur deux tables maîtresses pour résoudre le domaine d'une boutique : \u003Ccode>ps_shop_url\u003C\u002Fcode> et \u003Ccode>ps_configuration\u003C\u002Fcode>. La table \u003Ccode>ps_shop_url\u003C\u002Fcode> contient les variables physiques de routage (\u003Ccode>domain\u003C\u002Fcode>, \u003Ccode>domain_ssl\u003C\u002Fcode> et \u003Ccode>physical_uri\u003C\u002Fcode>), tandis que \u003Ccode>ps_configuration\u003C\u002Fcode> stocke les directives globales \u003Ccode>PS_SHOP_DOMAIN\u003C\u002Fcode> et \u003Ccode>PS_SHOP_DOMAIN_SSL\u003C\u002Fcode>. Pour une architecture multisite ou conteneurisée, vous pouvez vous appuyer sur notre \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fchanger-nom-domaine-seo\">guide technique de migration de domaine\u003C\u002Fa> afin de contextualiser ces modifications dans votre pipeline d'infrastructure.\u003C\u002Fp>\n\u003Cp>Voici la séquence SQL exacte à appliquer dans votre client MySQL ou MariaDB pour basculer le routage de votre instance vers le nouveau domaine :\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode>-- Vérification préalable de la configuration existante\nSELECT id_shop, domain, domain_ssl, physical_uri FROM ps_shop_url;\n\n-- Transaction de mise à jour atomique\nSTART TRANSACTION;\n\nUPDATE ps_shop_url\nSET domain = 'nouveau-domaine.fr',\n    domain_ssl = 'nouveau-domaine.fr',\n    physical_uri = '\u002F'\nWHERE id_shop = 1;\n\nUPDATE ps_configuration\nSET value = 'nouveau-domaine.fr'\nWHERE name = 'PS_SHOP_DOMAIN';\n\nUPDATE ps_configuration\nSET value = 'nouveau-domaine.fr'\nWHERE name = 'PS_SHOP_DOMAIN_SSL';\n\nCOMMIT;\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>Une fois les tables de routage alignées, une vérification approfondie des contenus textuels stockés en base s'impose. Des liens internes absolus pointant vers l'ancien nom de domaine sont fréquemment codés en dur dans les descriptions de produits, les blocs CMS ou les configurations de modules tiers. Utilisez des requêtes ciblées pour identifier ces occurrences sans effectuer de remplacement aveugle qui risquerait de corrompre des données sérialisées :\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode>-- Détection des liens résiduels dans les descriptions de produits\nSELECT id_product, id_lang, description \nFROM ps_product_lang \nWHERE description LIKE '%ancien-domaine.fr%' \nLIMIT 10;\n\n-- Détection des URLs absolues dans les pages CMS\nSELECT id_cms, id_lang, content \nFROM ps_cms_lang \nWHERE content LIKE '%ancien-domaine.fr%';\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>Après validation des requêtes, le cache applicatif de PrestaShop doit être purgé intégralement depuis le système de fichiers pour forcer la recompilation du conteneur d'injection de dépendances Symfony et des templates Smarty :\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode># Purge du cache applicatif Symfony\nrm -rf var\u002Fcache\u002Fprod\u002F* var\u002Fcache\u002Fdev\u002F*\n\n# Réinitialisation du cache mémoire si actif\nredis-cli flushdb\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Ch2>3. Configuration Nginx : règles de redirection 301 stricte et gestion du mapping\u003C\u002Fh2>\n\u003Cp>Traiter les redirections 301 au niveau du code PHP via des modules ou le contrôleur de tête de PrestaShop est une mauvaise pratique architecturale. Chaque requête envoyée à l'ancien domaine nécessiterait le démarrage du runtime PHP, le chargement de l'autoloader Composer, la connexion à la base de données et l'initialisation du framework, consommant inutilement des dizaines de mégaoctets de mémoire vive par requête. Sur un pic de crawl où les robots de Google explorent simultanément plusieurs dizaines de milliers d'URLs obsolètes, ce mécanisme sature rapidement les workers PHP-FPM.\u003C\u002Fp>\n\u003Cp>Le traitement des redirections permanentes doit être intégralement délégué au serveur web Nginx, en amont de PHP. Nginx gère les connexions HTTP avec une architecture événementielle asynchrone non-bloquante, capable de délivrer une réponse 301 en moins de deux millisecondes avec une empreinte processeur quasi nulle. Vous pouvez vous référer à la \u003Ca href=\"https:\u002F\u002Fnginx.org\u002Fen\u002Fdocs\u002Fhttp\u002Fngx_http_rewrite_module.html\" rel=\"noopener noreferrer\" target=\"_blank\">documentation du module rewrite de Nginx\u003C\u002Fa> pour explorer les spécifications complètes des directives de réécriture et d'évaluation des expressions régulières.\u003C\u002Fp>\n\n\u003Cblockquote>\n  \u003Cp>« Sur une infrastructure e-commerce en production, déléguer les redirections d'un changement de domaine à PHP ou à des modules tiers est une erreur de conception. Le traitement doit impérativement s'effectuer au niveau du serveur web Nginx, en amont du runtime. Une redirection 301 native répond en moins de deux millisecondes sans consommer de worker PHP, garantissant aux robots des moteurs de recherche un crawl fluide de plusieurs dizaines de milliers de pages sans saturation mémoire. »\u003C\u002Fp>\n  \u003Cp>— Alexandre Carette\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\n\u003Cp>Dans le cas le plus fréquent où la structure des chemins d'URLs demeure rigoureusement identique entre l'ancien et le nouveau domaine, la configuration d'un bloc serveur dédié sur l'ancien FQDN permet de réexpédier l'ensemble du trafic de façon déterministe avec la variable \u003Ccode>$request_uri\u003C\u002Fcode>, laquelle préserve nativement le chemin et les query strings :\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode># Bloc de redirection pour l'ancien domaine (HTTP)\nserver {\n    listen 80;\n    listen [::]:80;\n    server_name ancien-domaine.fr www.ancien-domaine.fr;\n    return 301 https:\u002F\u002Fnouveau-domaine.fr$request_uri;\n}\n\n# Bloc de redirection pour l'ancien domaine (HTTPS)\nserver {\n    listen 443 ssl http2;\n    listen [::]:443 ssl http2;\n    server_name ancien-domaine.fr www.ancien-domaine.fr;\n\n    ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fancien-domaine.fr\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fancien-domaine.fr\u002Fprivkey.pem;\n    ssl_protocols TLSv1.2 TLSv1.3;\n\n    # Préservation intégrale du chemin et des paramètres de requête\n    return 301 https:\u002F\u002Fnouveau-domaine.fr$request_uri;\n}\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>Lorsque la migration de domaine s'accompagne d'une refonte des structures d'URLs (par exemple, la suppression des identifiants numériques dans les slugs ou la réorganisation des catégories), l'utilisation d'une table de hachage via la directive \u003Ccode>map\u003C\u002Fcode> de Nginx offre des performances optimales en complexité algorithmique O(1), bien supérieures à une accumulation de règles \u003Ccode>rewrite\u003C\u002Fcode> séquentielles :\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode># Définition de la table de mapping dans le contexte http\nmap $uri $new_target_uri {\n    default \"\";\n    \u002Fancien-chemin\u002Fguide.html \u002Fnouveau-chemin\u002Fguide\u002F;\n    \u002Fpromotions-hiver \u002Fdestockage;\n}\n\nserver {\n    listen 443 ssl http2;\n    server_name ancien-domaine.fr;\n\n    ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fancien-domaine.fr\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fancien-domaine.fr\u002Fprivkey.pem;\n\n    # Si une correspondance explicite existe dans le mapping\n    if ($new_target_uri != \"\") {\n        return 301 https:\u002F\u002Fnouveau-domaine.fr$new_target_uri;\n    }\n\n    # Redirection générique par défaut\n    return 301 https:\u002F\u002Fnouveau-domaine.fr$request_uri;\n}\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Ch2>4. Déploiement DNS, double certification TLS et gestion des sitemaps XML\u003C\u002Fh2>\n\u003Cp>L'orchestration réseau et la synchronisation avec les moteurs de recherche conditionnent la fluidité de la transition. Une bascule DNS mal calibrée peut entraîner une indisponibilité temporaire ou des erreurs de certificat SSL qui interrompent net le transfert du signal de confiance accumulé au fil des années. La méthodologie requiert un calendrier d'exécution strict étalé sur plusieurs jours.\u003C\u002Fp>\n\u003Cp>Quarante-huit heures avant la date prévue pour la bascule, vous devez abaisser le TTL (Time To Live) de vos enregistrements DNS pour l'ancien comme pour le nouveau domaine à 300 secondes (5 minutes). Cette précaution garantit que la propagation des nouvelles adresses IP s'effectuera de façon quasi instantanée sur les résolveurs publics du monde entier le jour de l'opération.\u003C\u002Fp>\n\u003Cp>Le déploiement des certificats TLS constitue un autre point critique souvent négligé. Pour que la redirection 301 soit lue et exécutée par un navigateur ou par un crawler, la négociation TLS (le handshake HTTPS) doit aboutir sans avertissement de sécurité. Vous devez donc maintenir un certificat SSL valide et renouvelé pour l'ancien domaine pendant au minimum douze mois, tout en installant le certificat du nouveau domaine sur le serveur cible.\u003C\u002Fp>\n\u003Cp>Concernant les sitemaps XML et la console d'administration des moteurs de recherche, la démarche rigoureuse s'articule autour des étapes suivantes :\u003C\u002Fp>\n\n\u003Col>\n  \u003Cli>\u003Cstrong>Conservation de l'ancien sitemap XML :\u003C\u002Fstrong> Maintenez l'ancien fichier sitemap accessible sur l'ancien domaine, pointant vers les anciennes URLs qui répondent désormais en 301. Cela incite les robots à revisiter régulièrement l'ancien catalogue pour enregistrer le déplacement permanent des pages.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Génération et soumission du nouveau sitemap :\u003C\u002Fstrong> Générez un sitemap propre et exhaustif sur le nouveau domaine (via le module natif \u003Ccode>gsitemap\u003C\u002Fcode> ou un script dédié) listant uniquement les URLs en code HTTP 200, puis soumettez-le sur la nouvelle propriété Google Search Console.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Validation au niveau du domaine dans Google Search Console :\u003C\u002Fstrong> Créez une propriété de type Domaine (via enregistrement DNS TXT) pour le nouveau domaine afin d'englober tous les protocoles et sous-domaines potentiels.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Déclaration du changement d'adresse :\u003C\u002Fstrong> Activez l'outil officiel de changement d'adresse dans les paramètres de l'ancienne propriété Search Console, en sélectionnant le nouveau domaine validé. L'outil effectue une validation préliminaire des redirections 301 avant de confirmer la prise en compte du transfert.\u003C\u002Fli>\n\u003C\u002Fol>\n\n\u003Ch2>5. Surveillance active des logs Nginx et plan d'éradication des erreurs 404 sur 90 jours\u003C\u002Fh2>\n\u003Cp>Le jour du basculement ne marque pas la fin du travail d'ingénierie, mais le début d'une phase de veille active de 90 jours. C'est durant ce trimestre que les algorithmes de crawl redistribuent le PageRank et que les plateformes tierces mettent à jour leurs index. Une surveillance rigoureuse des journaux d'accès (access logs) de Nginx permet d'intercepter immédiatement les erreurs 404 avant qu'elles ne dégradent votre profil d'indexation.\u003C\u002Fp>\n\u003Cp>Les erreurs 404 post-migration proviennent généralement de trois sources distinctes : des règles de réécriture mal calibrées sur des URLs spécifiques, des backlinks historiques pointant vers des formats oubliés, ou des requêtes générées par des applications tierces dont les flux d'API n'ont pas été réorientés. L'analyse directe des journaux Nginx en ligne de commande fournit un diagnostic immédiat et sans biais.\u003C\u002Fp>\n\u003Cp>Voici un pipeline de commandes bash permettant d'extraire quotidiennement les 20 URLs les plus fréquemment sollicitées qui retournent un code HTTP 404 sur votre serveur :\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode># Extraction des URLs en 404 triées par volume de requêtes\nawk '($9 ~ \u002F404\u002F)' \u002Fvar\u002Flog\u002Fnginx\u002Faccess.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -n 20\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>Pour remonter à la source de l'erreur et déterminer quel site externe ou quel script génère ces requêtes orphelines, l'analyse du champ HTTP Referer s'avère indispensable :\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode># Identification des referers générant des réponses 404\nawk '($9 ~ \u002F404\u002F)' \u002Fvar\u002Flog\u002Fnginx\u002Faccess.log | awk -F'\"' '{print $4 \" -> \" $2}' | sort | uniq -c | sort -rn | head -n 20\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>Le protocole de suivi sur 90 jours doit être rythmé par un calendrier d'actions précises :\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>Jours 1 à 7 :\u003C\u002Fstrong> Analyse quotidienne des journaux Nginx et des rapports d'indexation Search Console. Correction immédiate des chemins d'URLs oubliés via des ajouts ciblés dans la table de mapping Nginx.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Jours 8 à 30 :\u003C\u002Fstrong> Comparaison hebdomadaire des courbes d'impressions et de clics entre l'ancienne et la nouvelle propriété. Vérification de la disparition progressive des pages de l'ancien domaine dans les résultats de recherche au profit du nouveau.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Jours 31 à 60 :\u003C\u002Fstrong> Cartographie des backlinks externes majeurs qui transitent encore par une redirection 301. Contact direct avec les partenaires éditoriaux stratégiques pour mettre à jour les liens sources et éliminer la latence liée à la redirection.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Jours 61 à 90 :\u003C\u002Fstrong> Stabilisation finale des métriques de trafic organique, vérification des positions sur les requêtes clés de votre catalogue et clôture formelle du dossier de migration.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>6. Synthèse d'ingénierie et sécurisation de votre environnement e-commerce\u003C\u002Fh2>\n\u003Cp>Migrer le nom de domaine d'une boutique PrestaShop sans dégrader son autorité SEO exige une rigueur méthodique à chaque niveau de la pile technique : intégrité des données en base SQL, configuration déterministe des redirections 301 sous Nginx, maintien du handshake TLS sur l'ancien FQDN et surveillance continue des journaux système. Lorsqu'elle est exécutée selon ces principes d'artisan-ingénieur, la transition s'opère sans rupture de trafic ni perte de visibilité.\u003C\u002Fp>\n\u003Cp>Chaque couche d'infrastructure, de la base de données relationnelle aux directives de proxying inverse, joue un rôle déterminant dans la préservation de vos positions organiques. En traitant les redirections au plus près du noyau réseau et en monitorant activement les réponses HTTP 404, vous éliminez tout risque de déperdition de PageRank.\u003C\u002Fp>\n\u003Cp>Pour aller plus loin et garantir qu'aucun point de friction technique ne bride votre croissance organique après une telle opération, vous pouvez demander votre Note de Mesure personnalisée. Ce diagnostic technique complet évalue en profondeur la performance Core Web Vitals, la conformité SEO technique, la sécurité et l'architecture de votre boutique PrestaShop, réalisé sur-mesure par Alexandre Carette.\u003C\u002Fp>",[],[237,240,243,246,249,252,255,258,261,264,267,270,273,276,279],{"q":238,"a":239},"Pourquoi ne faut-il pas modifier le nom de domaine uniquement dans le back-office PrestaShop ?","Le back-office ne met à jour que certaines variables applicatives. Si le cache OPCache, Redis ou Symfony est actif, la modification peut corrompre la session administrateur sans propager le routage. Une mise à jour SQL directe dans ps_shop_url et ps_configuration garantit une bascule atomique et prévisible.",{"q":241,"a":242},"Pourquoi privilégier Nginx plutôt que le fichier .htaccess pour les redirections 301 ?","Nginx traite les redirections directement dans sa boucle événementielle sans démarrer le runtime PHP ni charger le framework PrestaShop. Le temps de réponse reste sous les 2 millisecondes contre 150 à 300 millisecondes sous Apache\u002FPHP, évitant la saturation des workers lors des crawls massifs de Googlebot.",{"q":244,"a":245},"Combien de temps faut-il conserver l'ancien nom de domaine actif ?","Il est impératif de conserver l'ancien nom de domaine ainsi que son certificat SSL actif pendant au moins 12 à 24 mois. Cela permet aux moteurs de recherche et aux utilisateurs venant de backlinks anciens d'être redirigés en permanence sans erreur de sécurité.",{"q":247,"a":248},"Que se passe-t-il si le certificat SSL de l'ancien domaine expire après la migration ?","Si le certificat SSL expire, la négociation TLS échoue immédiatement avec un message d'erreur de sécurité dans le navigateur ou pour les robots d'indexation. La redirection 301 n'est jamais reçue, provoquant la perte immédiate du trafic et du jus de liens associé.",{"q":250,"a":251},"Comment la variable $request_uri de Nginx gère-t-elle les paramètres d'URL (query strings) ?","La variable $request_uri capture l'intégralité du chemin demandé ainsi que les arguments de requête (paramètres GET, tags UTM, identifiants de tri). Les paramètres sont transmis intacts à la nouvelle URL sans nécessiter de configuration regex complexe.",{"q":253,"a":254},"Pourquoi conserver l'ancien sitemap XML dans Google Search Console ?","Conserver l'ancien sitemap listant les anciennes URLs incite Googlebot à continuer d'explorer ces adresses. En recevant systématiquement une réponse 301 vers le nouveau domaine, le moteur de recherche accélère la mise à jour de son index.",{"q":256,"a":257},"À quel moment doit-on baisser le TTL des enregistrements DNS avant une migration ?","Le TTL doit être réduit à 300 secondes (5 minutes) environ 48 heures avant la bascule. Cette opération permet de réduire le temps de mise en cache sur les résolveurs DNS mondiaux et d'assurer une bascule quasi instantanée le jour J.",{"q":259,"a":260},"Comment détecter les URLs absolues codées en dur dans la base de données de PrestaShop ?","Il convient d'exécuter des requêtes SQL ciblées avec LIKE sur les tables ps_product_lang (champ description), ps_category_lang (description) et ps_cms_lang (content) pour identifier les occurrences sans effectuer de remplacement global risquant de corrompre des champs sérialisés.",{"q":262,"a":263},"Quelle est l'utilité de la directive map de Nginx lors d'un changement de domaine ?","La directive map crée une table de hachage en mémoire fonctionnant en complexité O(1). Elle permet de rediriger des milliers d'URLs individuellement sans dégrader les performances du serveur web, contrairement à une longue suite d'instructions rewrite ou if.",{"q":265,"a":266},"Comment fonctionne l'outil de changement d'adresse de Google Search Console ?","Cet outil informe explicitement Google que votre site a déménagé vers un nouveau FQDN. Il effectue une vérification préalable des redirections 301 sur quelques URLs clés et accélère la consolidation des signaux d'indexation vers la nouvelle propriété.",{"q":268,"a":269},"Pourquoi la période de surveillance post-migration est-elle fixée à 90 jours ?","90 jours correspondent au cycle habituel nécessaire aux robots des moteurs pour réévaluer l'ensemble du maillage, retraiter les backlinks externes disséminés sur le web et stabiliser la distribution du PageRank sur les nouvelles pages.",{"q":271,"a":272},"Que faire si des erreurs 404 apparaissent dans les logs Nginx après la bascule ?","Il faut identifier l'URL demandée et son Referer via les logs Nginx. Si l'URL correspond à une ancienne page légitime ayant changé de structure, ajoutez une règle de redirection 301 explicite dans la table de mapping Nginx.",{"q":274,"a":275},"Doit-on modifier le fichier robots.txt de l'ancien domaine ?","Non, l'ancien domaine ne doit pas bloquer les robots via robots.txt. Toutes les requêtes, y compris celles vers robots.txt ou le sitemap, doivent être routées ou redirigées afin de permettre aux moteurs de lire les statuts HTTP 301.",{"q":277,"a":278},"Quel est l'impact d'une boucle de redirection (redirect loop) sur le SEO d'une boutique ?","Une boucle de redirection bloque complètement l'exploration par les robots et empêche l'accès aux clients. Googlebot abandonne l'exploration de la page après quelques sauts et finit par désindexer l'URL concernée s'il ne peut atteindre la destination finale.",{"q":280,"a":281},"Comment vider proprement le cache PrestaShop après une mise à jour en base de données ?","La méthode la plus sûre consiste à supprimer physiquement les répertoires var\u002Fcache\u002Fprod et var\u002Fcache\u002Fdev en ligne de commande sous Linux, puis à vider les bases de cache mémoire (Redis ou Memcached) via leurs commandes CLI respectives.","Transférez le domaine de votre boutique PrestaShop sans perte SEO : requêtes SQL, configuration Nginx 301, Search Console et monitoring des 404 sur 90 jours.","2026-09-29T06:00:04.000Z",11,{"fr":208},[287],"fr",{"id":47,"slug":289,"name":164,"firstname":290,"lastname":291,"title":292,"bio":293,"image":294,"linkedinUrl":295,"url":296},"alexandre-carette","Alexandre","Carette","Architecte e-commerce, SEO technique, AIO\u002FGEO","Consultant freelance e-commerce et SEO IA (AIO\u002FGEO), basé à Metz. Architecte PrestaShop Headless, SEO technique, visibilité dans les moteurs conversationnels (ChatGPT, Perplexity, Gemini). Zéro sous-traitance : un seul interlocuteur.","\u002Falexandre-carette-256.webp","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fcarette-alexandre","\u002Fauteur\u002Falexandre-carette",[],[299,302,314,326],{"id":228,"title":230,"category":212,"subcategory":213,"slug":232,"segment":300,"categoryPath":211,"path":229,"linkRewrite":301,"excerpt":282,"coverImage":233,"thumbnailImage":233,"nuxtUrl":208,"indexable":20,"datePublished":283,"dateUpdated":283,"readingTime":284,"faqCount":39},"changer-nom-domaine-prestashop-redirections-301","devops--methode--changer-nom-domaine-prestashop-redirections-301",{"id":303,"title":304,"category":212,"subcategory":213,"slug":305,"segment":306,"categoryPath":211,"path":307,"linkRewrite":308,"excerpt":309,"coverImage":310,"thumbnailImage":310,"nuxtUrl":311,"indexable":20,"datePublished":312,"dateUpdated":312,"readingTime":313,"faqCount":39},117,"Sauvegarde et PRA PrestaShop : reprise en moins de 30 min","methode--plan-reprise-activite-pra-sauvegarde-prestashop","plan-reprise-activite-pra-sauvegarde-prestashop","devops\u002Fmethode\u002Fplan-reprise-activite-pra-sauvegarde-prestashop","devops--methode--plan-reprise-activite-pra-sauvegarde-prestashop","Protégez votre boutique PrestaShop avec un vrai PRA : dumps chiffrés hors-site, Point-in-Time Recovery via binlogs MySQL et RTO inférieur à 30 minutes.","\u002Fblog-covers\u002Ff579737a836d.webp","\u002Fblog\u002Fdevops\u002Fmethode\u002Fplan-reprise-activite-pra-sauvegarde-prestashop","2026-09-28T06:00:02.000Z",10,{"id":315,"title":316,"category":212,"subcategory":213,"slug":317,"segment":318,"categoryPath":211,"path":319,"linkRewrite":320,"excerpt":321,"coverImage":322,"thumbnailImage":322,"nuxtUrl":323,"indexable":20,"datePublished":324,"dateUpdated":324,"readingTime":325,"faqCount":39},116,"Migration serveur PrestaShop sans coupure : le guide","methode--migration-serveur-prestashop-zero-downtime","migration-serveur-prestashop-zero-downtime","devops\u002Fmethode\u002Fmigration-serveur-prestashop-zero-downtime","devops--methode--migration-serveur-prestashop-zero-downtime","Découvrez le protocole complet pour migrer votre boutique PrestaShop sans perte de commande : synchronisation rsync, dump ACID, TTL DNS et recette technique.","\u002Fblog-covers\u002Fedcade207046.webp","\u002Fblog\u002Fdevops\u002Fmethode\u002Fmigration-serveur-prestashop-zero-downtime","2026-09-27T06:00:02.000Z",13,{"id":327,"title":328,"category":212,"subcategory":329,"slug":330,"segment":331,"categoryPath":332,"path":333,"linkRewrite":334,"excerpt":335,"coverImage":336,"thumbnailImage":336,"nuxtUrl":337,"indexable":20,"datePublished":338,"dateUpdated":338,"readingTime":313,"faqCount":39},115,"VPS OVH PrestaShop : Nginx et PHP-FPM en production","docker","docker--hebergement-prestashop-vps-ovh-configuration-production","hebergement-prestashop-vps-ovh-configuration-production","devops\u002Fdocker","devops\u002Fdocker\u002Fhebergement-prestashop-vps-ovh-configuration-production","devops--docker--hebergement-prestashop-vps-ovh-configuration-production","Pourquoi le mutualisé sature dès 50 commandes\u002Fjour et comment dimensionner un VPS NVMe OVH : Nginx, PHP-FPM, OPcache et MariaDB expliqués par un ingénieur PrestaShop.","\u002Fblog-covers\u002F169867e09ab9.webp","\u002Fblog\u002Fdevops\u002Fdocker\u002Fhebergement-prestashop-vps-ovh-configuration-production","2026-09-26T18:10:50.000Z"]