[{"data":1,"prerenderedAt":204},["ShallowReactive",2],{"seo-verification":3,"blog-migrer-site-wordpress-client-nouvel-hebergeur-sans-coupure-fr":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-migrer-site-wordpress-client-nouvel-hebergeur-sans-coupure-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":145,"ctaBody":146,"ctaButton":147,"ctaUrl":148,"relatedPosts":149},538,"migrer-site-wordpress-client-nouvel-hebergeur-sans-coupure",{"fr":10,"en":12,"ar":13,"es":14},"migrate-client-wordpress-site-new-host-no-downtime","نقل-موقع-ووردبريس-عميل-استضافة-جديدة-دون-توقف","migrar-sitio-wordpress-cliente-nuevo-hosting-sin-cortes","Migrer un site WordPress client sans coupure : la méthode","Copie, test par fichier hosts avant le DNS, gel des commandes, search-replace, bascule et retour arrière : la méthode pour migrer un WordPress client.",11,0,false,"2026-10-30T00:00:00+00:00","2026-10-31T01:54:05+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},3,"Déploiement","deploiement","bg-success\u002F10 text-success",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fmigrer-site-wordpress-client-nouvel-hebergeur-sans-coupure-poster.svg",{"categorySlug":33,"appSlug":34},"cms","wordpress","Une migration WordPress rate rarement à cause de la copie des fichiers. Elle rate parce que le site continue de vivre pendant qu'on le déplace : une commande tombe sur l'ancien serveur après l'export de la base, un formulaire écrit dans une base que plus personne ne lit. Pour une agence, c'est le client qui appelle. Ce guide donne la séquence, les réglages de `wp-config.php`, le remplacement des URL en base, le gel des écritures, les symptômes qui suivent une bascule et le retour arrière.",[37,41,68,71,74,77,80,90,126,129,138,142],{"type":38,"title":39,"body":40},"h2","Le vrai risque : deux bases qui divergent","Un site WordPress se compose de fichiers, qu'on recopie sans danger, et d'une base de données, qui change à chaque visite : commande, inscription, commentaire, entrée de formulaire, panier. Dès que vous exportez la base, l'ancienne continue d'écrire et la copie devient périmée. Tant que le DNS pointe vers l'ancien serveur, cet écart ne se voit pas. Le jour de la bascule, il devient une perte : tout ce qui est arrivé après l'export n'existe que sur l'ancien serveur.\n\nLa méthode tient en une phrase : monter et tester la copie à l'avance, puis geler les écritures, reprendre une dernière fois fichiers et base, et seulement alors changer le DNS. L'ordre général d'un changement d'hébergeur (TTL, e-mails, domaine) fait l'objet d'un autre guide ; celui-ci traite ce qui est propre à WordPress.",{"type":42,"steps":43},"steps",[44,47,50,53,56,59,62,65],{"title":45,"body":46},"J-7 : inventorier le site","Relevez la version de PHP, les plugins qui écrivent (boutique, formulaires, réservations, abonnements), les tâches planifiées et les passerelles de paiement avec leurs adresses de rappel.\n`wp core version`\n`wp plugin list --status=active`\n`wp cron event list`\nNotez aussi où vit l'e-mail : il ne bougera pas.",{"title":48,"body":49},"J-3 : baisser le TTL","Passez le TTL des enregistrements A et AAAA du site à 300 secondes, au moins une ancienne durée de TTL avant la bascule. Ne touchez ni aux MX ni aux TXT.",{"title":51,"body":52},"J-2 : première copie complète","Fichiers : `rsync -az --info=progress2 utilisateur@ancien-serveur:\u002Fchemin\u002Fdu\u002Fsite\u002F \u002Fchemin\u002Fdu\u002Fsite\u002F`\nBase : `wp db export site.sql --single-transaction` sur l'ancien serveur, puis `wp db import site.sql` sur le nouveau. Chronométrez les deux : cette durée dimensionne la fenêtre de gel.",{"title":54,"body":55},"J-2 : isoler la copie","Sur la copie, ajoutez `define('DISABLE_WP_CRON', true);` dans `wp-config.php` et coupez les courriels de la boutique. La copie contient de vrais clients : un événement planifié rejoué enverrait des messages en double.",{"title":57,"body":58},"J-1 : tester par fichier hosts","Parcourez le site sur la copie sous son vrai nom, sans toucher au DNS public (section dédiée plus bas). Notez chaque anomalie, corrigez, recommencez.",{"title":60,"body":61},"J, heure creuse : geler et reprendre la dernière différence","Mettez la source en maintenance avec `wp maintenance-mode activate`, refaites l'export de la base, resynchronisez les fichiers avec la même commande `rsync`, importez, puis retestez par hosts.",{"title":63,"body":64},"J : basculer le DNS et émettre le certificat","Remplacez les enregistrements A et AAAA par les adresses du nouveau serveur, sans toucher aux MX. Émettez le certificat dès que le nom pointe vers la destination, puis retirez `DISABLE_WP_CRON`.",{"title":66,"body":67},"J à J+14 : vérifier, conserver, couper","Contrôlez les journaux de l'ancien serveur et la liste de vérification plus bas. Gardez l'ancien serveur en maintenance, intact, au moins deux semaines avant de le résilier.",{"type":38,"title":69,"body":70},"Copier fichiers et base, puis régler wp-config.php","Copiez les fichiers avec `rsync` plutôt qu'avec une archive téléversée à la main : il conserve les droits, reprend après une coupure et ne retransfère que ce qui a changé, ce qui rend la dernière passe très courte. Pour la base, préférez `wp db export` ou `mysqldump --single-transaction`, qui produit un export cohérent sans verrouiller les tables InnoDB.\n\nSur le nouveau serveur, `wp-config.php` est le premier fichier à relire. `DB_NAME`, `DB_USER` et `DB_PASSWORD` doivent correspondre à la base créée côté destination. `DB_HOST` vaut souvent `localhost`, mais certains hébergements imposent un hôte distinct, un port (`hote:3307`) ou un socket. Vérifiez aussi `$table_prefix`, qui doit être identique à celui des tables importées, sinon WordPress croit l'installation vide. Enfin, `WP_HOME` et `WP_SITEURL`, s'ils sont définis dans le fichier, l'emportent sur la base : une ancienne valeur oubliée ici renvoie chaque visiteur vers l'ancienne adresse.",{"type":38,"title":72,"body":73},"Remplacer les URL en base sans casser les données sérialisées","WordPress stocke des adresses absolues dans les articles, les options, les menus et les réglages des thèmes et des plugins, souvent à l'intérieur de valeurs sérialisées dont la longueur est inscrite dans la donnée. Un `sed` sur l'export change la longueur de la chaîne sans corriger ce compteur, et la valeur devient illisible : widgets vides, thème réinitialisé. `wp search-replace` lit et réécrit ces structures correctement.\n\nLe remplacement n'est nécessaire que si l'adresse change : nouveau nom de domaine, passage de `http` à `https`, ou copie montée sous une adresse provisoire. Si vous testez par fichier hosts sous le vrai nom, il n'y a rien à remplacer. Lancez toujours d'abord `wp search-replace 'http:\u002F\u002Fancien.votre-domaine.com' 'https:\u002F\u002Fvotre-domaine.com' --all-tables --skip-columns=guid --dry-run`, qui compte les remplacements sans rien écrire. Si le chiffre vous surprend, arrêtez-vous. Relancez ensuite sans `--dry-run`, sur la copie et jamais sur la source, puis `wp cache flush`. L'option `--skip-columns=guid` laisse intacts les identifiants des articles, que les lecteurs de flux RSS utilisent pour reconnaître un contenu déjà lu.",{"type":38,"title":75,"body":76},"Tester la copie avant le DNS, par le fichier hosts","Le fichier hosts de votre poste indique à votre seule machine où mener un nom de domaine, sans toucher au DNS public. Ajoutez une ligne `203.0.113.10 votre-domaine.com www.votre-domaine.com` (l'adresse du nouveau serveur) dans `\u002Fetc\u002Fhosts`, ou dans `C:\\Windows\\System32\\drivers\\etc\\hosts` sous Windows. Pour une seule requête, `curl --resolve votre-domaine.com:443:203.0.113.10 -I https:\u002F\u002Fvotre-domaine.com\u002F` fait la même chose sans modifier le poste. Videz le cache du navigateur, qui garde la résolution précédente.\n\nTestez des parcours, pas la page d'accueil : connexion à l'administration, une page profonde (qui révèle les permaliens), l'envoi d'un média, la recherche et, pour une boutique, un panier jusqu'à la page de paiement. Le certificat de la copie n'est peut-être pas encore émis (voir plus bas) : un avertissement est alors attendu, une page blanche ou une erreur PHP ne l'est pas. Retirez ensuite la ligne hosts : un fichier oublié fait croire pendant des semaines que la bascule n'a pas eu lieu.",{"type":38,"title":78,"body":79},"Geler les écritures pour les sites avec commandes et formulaires","Un site vitrine peut basculer sans rien geler : la perte éventuelle se résume à un commentaire. Dès que le site encaisse ou collecte des demandes, il faut une fenêtre sans écriture. La séquence : annoncer une courte maintenance, passer la source en maintenance, refaire l'export de la base, resynchroniser les fichiers (`rsync` ne transfère plus que la différence, souvent les seuls médias ajoutés), importer sur la destination, rejouer le `search-replace` s'il y en a un, tester par hosts, puis changer le DNS. L'ancien serveur reste en maintenance jusqu'à la fin.\n\nCette fenêtre dure quelques minutes pour une base de taille courante, et c'est une durée à mesurer lors de la première copie. Les passerelles de paiement posent un cas particulier : elles envoient leurs notifications à l'adresse configurée et rejouent celles qui échouent selon leur propre politique de tentatives, à confirmer dans leur documentation. Vérifiez dans leur tableau de bord que les rappels refusés pendant la maintenance sont bien rejoués une fois le nouveau site en ligne.",{"type":81,"title":82,"items":83},"ul","Ce qui écrit pendant la fenêtre, et comment l'arrêter",[84,85,86,87,88,89],"**Commandes WooCommerce** — la maintenance de la source les bloque ; un client qui a déjà un panier ouvert trouve un site indisponible, d'où l'annonce préalable.","**Formulaires de contact et de devis** — selon le plugin, les entrées sont en base, dans un fichier ou seulement envoyées par e-mail ; repérez où chacun écrit, car une entrée stockée sur l'ancien serveur après l'export est perdue.","**Commentaires et inscriptions** — fermez-les dans les réglages de discussion et d'inscription le temps de la fenêtre si la maintenance n'est pas possible.","**Tâches planifiées** — `wp cron event list` les liste ; la copie ne doit pas exécuter les mêmes que la source avant la bascule, sinon rappels et courriels de renouvellement partent en double.","**Webhooks entrants** — passerelles de paiement, CRM, outil d'expédition : leur adresse pointe un nom de domaine, donc le nouveau serveur après la bascule ; vérifiez que les secrets de signature ont été copiés avec les réglages.","**Visiteurs qui arrivent encore sur la source** — un résolveur à cache long les y envoie après la bascule ; l'ancien serveur peut les relayer vers le nouveau en conservant l'en-tête `Host`, à réserver aux équipes qui maîtrisent le reverse proxy.",{"type":91,"title":92,"headers":93,"rows":97},"comparison","Les symptômes d'après-bascule et leur cause",[94,95,96],"Symptôme","Cause probable","Correction",[98,102,106,110,114,118,122],[99,100,101],"Boucle de redirection (`ERR_TOO_MANY_REDIRECTS`)","WordPress force `https` mais ne voit que du `http` : un proxy, un CDN ou un équilibreur termine le TLS, ou le mode SSL du CDN est en Flexible","Mode Full (strict) côté CDN, ou lire `X-Forwarded-Proto` dans `wp-config.php` pour définir `$_SERVER['HTTPS']`",[103,104,105],"Error establishing a database connection","`DB_HOST`, identifiants ou droits de l'utilisateur erronés ; serveur MySQL arrêté","`wp db check`, puis test à la main avec `mysql -h hote -u utilisateur -p` ; accorder les droits sur la base",[107,108,109],"Installation vide ou écran d'installation","`$table_prefix` différent du préfixe réel des tables","Aligner le préfixe sur le résultat de `SHOW TABLES`",[111,112,113],"Contenu mixte : cadenas barré, images bloquées","Adresses `http:\u002F\u002F` restées dans les articles ou les options","`wp search-replace` de `http:\u002F\u002F` vers `https:\u002F\u002F`, après un `--dry-run`",[115,116,117],"Articles en 404, accueil correct","Règles de réécriture absentes : `.htaccess` non copié ou non lu, ou nginx sans `try_files`","`wp rewrite flush --hard` ; côté nginx, `try_files $uri $uri\u002F \u002Findex.php?$args;`",[119,120,121],"Menus, widgets ou thème réinitialisés","Valeurs sérialisées corrompues par un remplacement à l'aveugle","Réimporter l'export, puis refaire le remplacement avec `wp search-replace`",[123,124,125],"Anciennes adresses encore dans les pages","`WP_HOME` ou `WP_SITEURL` figés, ou cache de page non vidé","Corriger les constantes, `wp cache flush`, purger le cache de page",{"type":38,"title":127,"body":128},"E-mail et certificat : deux sujets qui ne suivent pas le site","L'hébergement web et l'e-mail sont deux services distincts, portés par des enregistrements DNS différents : les MX pour la réception, les TXT (SPF, DKIM, DMARC) pour l'émission. Une migration web ne doit modifier ni les MX ni les boîtes. Contrôlez-le avant et après avec `dig MX votre-domaine.com +short` et `dig TXT votre-domaine.com +short` : les deux sorties doivent être identiques. Le piège est l'émission : si le SPF liste l'adresse de l'ancien serveur (`ip4:`) et que WordPress envoie ses courriels depuis le nouveau, les notifications de commande tombent en spam. Ajoutez la nouvelle adresse au SPF ou, mieux, faites passer WordPress par un SMTP authentifié.\n\nLe certificat suit l'adresse. Avec une validation HTTP (`certbot --nginx` ou AutoSSL de cPanel), l'autorité de certification doit joindre le nouveau serveur par le vrai nom, ce qui n'est possible qu'après la bascule : émettez-le dans la foulée et attendez-vous à un avertissement avant, y compris pendant vos tests par hosts. Si ce délai est inacceptable, la validation par DNS permet d'émettre le certificat avant la bascule, au prix d'un accès API à la zone. Vérifiez ensuite l'échéance avec `curl -vI https:\u002F\u002Fvotre-domaine.com\u002F 2>&1 | grep -i expire`.",{"type":81,"title":130,"items":131},"À contrôler avant de couper l'ancien serveur",[132,133,134,135,136,137],"**Le trafic a vraiment changé de côté** — suivez les journaux d'accès de l'ancien serveur avec `tail -f` : seuls des robots et des résolveurs à cache long doivent y apparaître, puis plus personne.","**Les écritures arrivent au bon endroit** — passez une commande avec la passerelle en mode test, envoyez un formulaire, et retrouvez les deux en base et par e-mail.","**Les volumes sont comparables** — comparez le nombre de lignes des tables clés (`wp db query \"SELECT COUNT(*) FROM wp_posts\"`, préfixe à adapter) et la taille de `wp-content\u002Fuploads` avec la source.","**Les tâches planifiées tournent** — `wp cron event run --due-now` doit s'exécuter sans erreur ; branchez un vrai cron système si le trafic est faible.","**Le courrier est intact** — MX, SPF et DKIM inchangés, et un message de test reçu dans une boîte réelle.","**Une sauvegarde finale existe** — export de la base et copie des fichiers de l'ancien serveur, archivés hors de ce serveur, avant tout arrêt.",{"type":139,"title":140,"body":141},"tip","Décider du retour arrière avant la bascule","Le retour arrière est simple tant que l'ancien serveur reste intact : on remet l'ancienne adresse dans les enregistrements A et AAAA, au TTL bas déjà posé. Il cesse de l'être dès que la nouvelle base a reçu des commandes, car revenir en arrière les efface. Fixez donc la règle avant le jour J : retour possible sans condition jusqu'à la première écriture réelle sur le nouveau site, correction en avant au-delà. Gardez l'ancien serveur intact et payé au moins deux semaines : c'est le prix de la réversibilité.",{"type":38,"title":143,"body":144},"Sur un parc client, la méthode devient une routine","Écrivez cette séquence une fois, avec les durées mesurées, et réutilisez-la d'un client à l'autre : fiche d'inventaire, fenêtre de gel, liste de contrôles. Le client n'a pas à comprendre le DNS ; il a besoin de savoir quand aura lieu la maintenance et qui constate que tout fonctionne. Sur ServOrbit, l'hébergement revendeur regroupe les comptes de vos clients, et la migration assistée est une option pour les sites que vous préférez ne pas déplacer vous-même. Domaines, hébergements et échéances se suivent depuis un seul espace, sous votre marque.","Un portefeuille client sous une seule marque","Domaines, hébergements et échéances de vos clients se suivent depuis un seul espace agence, sous votre marque. La migration assistée est disponible en option pour les sites que vous préférez ne pas déplacer vous-même.","Découvrir l'offre agences","\u002Fsolutions\u002Fagences",[150,169,185],{"id":151,"slug":152,"slugs":153,"title":157,"excerpt":158,"readTime":17,"views":18,"isPinned":19,"publishedAt":159,"updatedAt":160,"category":161,"categories":166,"featuredImage":29,"bgImage":30,"posterImage":168,"relatedSolution":29},258,"changer-hebergeur-au-maroc-sans-coupure",{"fr":152,"en":154,"ar":155,"es":156},"changing-web-host-in-morocco-the-no-downtime-method","تغيير-مستضيف-الويب-في-المغرب-الطريقة-دون-انقطاع","cambiar-de-hosting-en-marruecos-sin-cortes","Changer d'hébergeur au Maroc : la méthode sans coupure","Changer d'hébergeur depuis le Maroc : ordre des opérations, TTL DNS, e-mails, transfert d'un .ma via l'ANRT et continuité de facturation.","2026-08-13T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":162,"name":163,"slug":164,"color":165,"icon":164},5,"Comparatif","comparatif","bg-info\u002F10 text-info",[167],{"id":162,"name":163,"slug":164,"color":165,"icon":164},"\u002Fblog\u002Fcovers\u002Fchanger-hebergeur-au-maroc-sans-coupure-poster.svg",{"id":170,"slug":171,"slugs":172,"title":176,"excerpt":177,"readTime":178,"views":18,"isPinned":19,"publishedAt":179,"updatedAt":180,"category":181,"categories":182,"featuredImage":29,"bgImage":30,"posterImage":184,"relatedSolution":29},528,"choisir-vps-ou-mutualise-site-client-agence",{"fr":171,"en":173,"ar":174,"es":175},"shared-hosting-or-vps-for-agency-client-site","استضافة-مشتركة-أم-vps-لموقع-عميل-الوكالة","hosting-compartido-o-vps-para-sitio-de-cliente-agencia","VPS ou mutualisé pour un site client : la grille de décision","Mutualisé ou VPS pour un site client : tableau comparatif, heures de maintenance par mois, grille en cinq questions et signaux pour migrer.",9,"2026-10-29T00:00:00+00:00","2026-10-29T15:45:55+00:00",{"id":162,"name":163,"slug":164,"color":165,"icon":164},[183],{"id":162,"name":163,"slug":164,"color":165,"icon":164},"\u002Fblog\u002Fcovers\u002Fchoisir-vps-ou-mutualise-site-client-agence-poster.svg",{"id":186,"slug":187,"slugs":188,"title":192,"excerpt":193,"readTime":194,"views":18,"isPinned":19,"publishedAt":195,"updatedAt":196,"category":197,"categories":201,"featuredImage":29,"bgImage":30,"posterImage":203,"relatedSolution":29},130,"migrer-portefeuille-servorbit-assistant",{"fr":187,"en":189,"ar":190,"es":191},"migrate-your-entire-portfolio-to-servorbit-in-a-single-order","انقل-محفظتك-بالكامل-إلى-servorbit-في-طلب-واحد","migrar-cartera-servorbit-asistente","ServOrbit : migrez tout votre portefeuille en une seule commande","Domaines et comptes cPanel réunis : l'assistant de migration vous laisse rapatrier votre portefeuille vers ServOrbit en une commande guidée, sans interruption de service.",2,"2026-06-23T00:00:00+00:00","2026-10-21T15:21:30+00:00",{"id":178,"name":198,"slug":199,"color":200,"icon":199},"Actualités","actualites","bg-sky-500\u002F10 text-sky-400",[202],{"id":178,"name":198,"slug":199,"color":200,"icon":199},"\u002Fblog\u002Fcovers\u002Fmigrer-portefeuille-servorbit-assistant-poster.svg",1793414169736]