Disponible pour missions & renforts d’agence · Réponse rapide, par la personne qui intervient

Dupliquer un site WordPress en préproduction

Tester une mise à jour ou un développement sur une copie fidèle du site, avant de toucher à la production, suppose presque toujours de changer l’URL (site.fr vers preprod.site.fr ou un sous-dossier). Ce changement d’URL est le point technique le plus mal maîtrisé de ce type de copie.

Décrire mon problème Discuter sur WhatsApp

Pourquoi changer l’URL casse des réglages si on s’y prend mal

WordPress stocke une partie de ses données (réglages de thème, configuration de widgets, certaines métadonnées, options de plugins) sous forme de données PHP sérialisées dans les colonnes texte de la base MySQL. Une chaîne sérialisée encode la longueur exacte de chaque sous-chaîne qu’elle contient, par exemple s:22:"https://ancien-site.fr". Si on remplace l’URL par un simple rechercher-remplacer SQL, avec une requête du type UPDATE wp_options SET option_value = REPLACE(...), le nombre déclaré avant les guillemets ne correspond plus à la nouvelle longueur de chaîne, et WordPress échoue à désérialiser la donnée.

Une copie de préproduction multiplie les occasions de tomber dans ce piège, car l’URL change souvent une deuxième fois par la suite : une adresse de test provisoire au moment de la copie, puis une adresse définitive de préprod une fois l’environnement stabilisé. Chaque changement doit repasser par le même outil, pas seulement le premier.

Le résultat n’est pas toujours visible immédiatement : réglages de thème réinitialisés, widgets qui disparaissent, options de plugin vidées, parfois sans message d’erreur clair. La bonne méthode passe par un outil qui recalcule ces longueurs à chaque remplacement, typiquement la commande wp search-replace ancienne-url nouvelle-url --all-tables de WP-CLI, ou un plugin de migration qui fait ce travail en interne, comme All-in-One WP Migration ou WP Migrate DB.

Ce qu’il faut prévoir en plus d’une copie classique

  • Empêcher l’indexation par les moteurs de recherche : un doublon de contenu indexé nuit au référencement du site principal
  • Couper l’envoi réel d’e-mails (confirmations de commande, notifications) pour ne pas alerter de vrais clients pendant les tests
  • Neutraliser les passerelles de paiement en les laissant strictement en mode test, pour ne jamais déclencher un paiement réel
  • Un écart qui se creuse avec le temps entre la préprod et la production si aucune synchronisation régulière n’est prévue

Comment je conduis une duplication en préproduction

  1. Copie complète des fichiers et de la base

    Je duplique l’intégralité des fichiers du site et un export de la base de données vers l’environnement de préproduction.

  2. Remplacement d’URL avec wp search-replace

    L’URL de production est remplacée par celle de la préprod avec WP-CLI, qui recalcule correctement les longueurs des données sérialisées.

  3. Blocage de l’indexation

    J’ajoute une balise noindex ou un fichier robots.txt dédié à la préprod, pour qu’aucun moteur de recherche n’indexe le doublon.

  4. Neutralisation des e-mails sortants

    J’utilise un service de capture d’e-mails ou je désactive le plugin d’envoi, pour qu’aucune notification ne parte vers un vrai client depuis la préprod.

  5. Passage des passerelles de paiement en mode test

    Les identifiants de paiement réels sont remplacés par leurs équivalents de test, pour ne jamais déclencher un mouvement d’argent réel.

  6. Resynchronisation si nécessaire

    Si l’écart entre préprod et production devient trop important avec le temps, je relance une copie complète depuis la production plutôt que de corriger la préprod au cas par cas.

Pour aller plus loin

Décrivez votre besoin en 1 minute

Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.

D’où partez-vous ?
Quelle est la taille du catalogue, s’il y a une boutique ?
Le site utilise-t-il des extensions payantes avec licence à retransférer ? (facultatif)

Certaines licences sont limitées à un domaine ou nécessitent une réactivation auprès de l’éditeur.

Qu’est-ce qui doit impérativement être conservé ? (facultatif)
Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Questions fréquentes

Pourquoi ma préproduction apparaît-elle dans Google alors que je ne l’ai jamais partagée ?
Sans balise noindex ou fichier robots.txt dédié, les moteurs de recherche peuvent découvrir et indexer la préprod comme n’importe quel site public, créant un doublon de contenu qui nuit au référencement du site principal.
Un vrai client peut-il recevoir un e-mail depuis mes tests en préproduction ?
Oui, si l’envoi d’e-mails n’est pas coupé. C’est pour cela que je désactive le plugin d’envoi ou j’utilise un service de capture d’e-mails avant de commencer à tester des commandes sur la préprod.
Peut-on utiliser un simple copier-coller SQL pour changer l’URL en préproduction ?
Non. WordPress sérialise certaines données en base, avec la longueur exacte de chaque chaîne encodée. Un remplacement texte brut casse ces longueurs et corrompt silencieusement des réglages de thème et de plugins.
Faut-il refaire une copie complète à chaque test ?
Pas systématiquement, mais si l’écart entre la préprod et la production devient important avec le temps, une resynchronisation complète évite de corriger des différences au cas par cas.
Un paiement réel peut-il être déclenché pendant un test en préproduction ?
Seulement si la passerelle de paiement reste configurée en mode réel. Je remplace systématiquement les identifiants réels par leurs équivalents de test avant toute manipulation du tunnel de commande.