Une migration de contenus se termine rarement là où on l'imagine. Les articles sont bien passés, les titres sont là, les images s'affichent, et le code sous jacent porte encore toutes les habitudes de l'ancien système : styles en dur, balises de mise en forme obsolètes, conteneurs vides, classes orphelines pointant vers une feuille de style qui n'existe plus. Ce contenu fonctionne et il résiste à toute évolution graphique, puisque chaque paragraphe impose sa propre apparence. Le nettoyer demande une méthode, un ordre d'opérations et surtout des contrôles à chaque étape, sur des volumes qui interdisent la relecture manuelle intégrale.
Inventorier avant de corriger
La tentation est forte de lancer immédiatement des remplacements sur toute la base. C'est la meilleure façon de casser des contenus sans pouvoir revenir en arrière. Une phase d'inventaire, qui prend une heure, oriente tout le reste du travail et fait souvent apparaître que le problème est plus concentré qu'il n'y paraît. Les questions d'encodage rencontrées à cette étape sont détaillées dans notre article sur la manière de parser du HTML en Python sans casser l'encodage.
Extraire un échantillon représentatif
Une vingtaine de contenus tirés au hasard, ouverts dans un éditeur de code, montrent immédiatement les motifs récurrents. Ajouter à cet échantillon les contenus les plus anciens, les plus longs et ceux comportant des tableaux ou des galeries couvre les cas particuliers. Cette lecture donne la liste des scories à traiter, liste qui compte généralement entre huit et quinze motifs distincts. Travailler sans cette liste revient à corriger au hasard. Elle sert ensuite de plan de travail et de support de suivi, chaque motif étant coché une fois traité et contrôlé.
Compter les occurrences
Une requête comptant les contenus concernés par chaque motif transforme la liste en ordre de priorité. Un attribut de style présent dans quatre mille articles ne se traite pas comme une balise obsolète présente dans douze. Ce comptage indique aussi ce qui peut être laissé de côté, tout n'ayant pas vocation à être corrigé. La règle du meilleur rapport s'applique ici comme ailleurs. Un motif présent dans une dizaine de contenus se corrige plus vite à la main que par un traitement automatique qu'il faudrait écrire, tester et vérifier.
Repérer les motifs dangereux
Certains éléments demandent une attention particulière : les blocs de code, les tableaux de données et les contenus comportant des exemples de balisage affichés comme du texte. Un nettoyage automatique appliqué sans discernement détruit ces contenus. Les identifier tôt permet de les exclure du traitement général et de les reprendre à la main. Ils représentent en général une poignée de pages. Les exclure du traitement par une liste d'identifiants, plutôt que d'espérer que les expressions employées les épargnent, est la seule approche sûre.
Vérifier l'encodage
Les caractères accentués mal convertis, apostrophes et guillemets transformés en suites illisibles, sont le symptôme d'une conversion d'encodage ratée à l'import. Ce défaut se corrige par un traitement dédié, distinct du nettoyage du balisage, et il doit être traité en premier. Le corriger après avoir modifié le balisage complique inutilement le travail. Un comptage des séquences suspectes donne l'ampleur du problème en une requête. Il faut chercher les suites de caractères caractéristiques d'une conversion ratée, faciles à repérer une fois qu'on en a vu quelques unes.
Sauvegarder l'état initial
Une copie complète de la table des contenus, conservée sous un autre nom, permet de comparer, de recommencer et de restaurer un contenu isolé. Cette copie coûte quelques mégaoctets et elle est la condition qui rend le reste du travail serein. Elle doit être conservée plusieurs mois après la fin de l'opération. Beaucoup d'incidents se découvrent longtemps après. Un contenu peu consulté peut rester abîmé pendant six mois avant que quelqu'un ne le signale, et la copie initiale est alors le seul recours.
Préparer un environnement de test
Aucun traitement de masse ne doit être lancé directement en production. Une copie du site, même sommaire, permet d'exécuter les passes, de constater le résultat et d'ajuster. Le temps consacré à monter cet environnement est largement récupéré dès le premier ajustement. C'est le préalable qui distingue une migration maîtrisée d'une réparation permanente. Une copie locale, montée avec les outils habituels, suffit largement pour ce type de travail.

L'ordre des passes de nettoyage
L'ordre compte, car certaines corrections en facilitent d'autres et certaines les rendent impossibles. La séquence qui suit est celle qui produit le moins de reprises.
Corriger l'encodage en premier
Tant que les caractères sont abîmés, toute recherche textuelle est faussée et tout comptage est faux. Cette passe se mène seule, se vérifie sur un échantillon et se valide avant d'aller plus loin. Elle est souvent la plus délicate, une double conversion pouvant produire des séquences difficiles à démêler. Y consacrer le temps nécessaire évite de traîner le problème jusqu'à la fin. Il vaut mieux traiter les séquences les plus fréquentes d'abord, puis reprendre les cas résiduels à la main, plutôt que de chercher une règle universelle.
Supprimer les attributs de style
Les attributs de style en ligne sont la principale scorie et leur suppression rend au thème le contrôle de l'apparence. Elle doit être précédée d'un relevé des valeurs rencontrées, certaines pouvant être légitimes, largeur de tableau ou alignement d'image. La suppression aveugle de tous ces attributs modifie l'apparence de contenus qui étaient corrects. Un traitement distinguant les propriétés à conserver demande une heure de plus et évite des reprises manuelles. Le relevé des propriétés rencontrées, trié par fréquence, permet de décider en connaissance de cause : la liste comporte rarement plus d'une dizaine d'entrées significatives.
Retirer les balises de mise en forme obsolètes
Les balises de police, de centrage et de mise en forme héritées des anciens éditeurs se remplacent par leur équivalent sémantique ou disparaissent purement et simplement. Ce remplacement est mécanique et sans risque, à condition de préserver le contenu textuel qu'elles encadrent. C'est la passe la plus satisfaisante, le gain de lisibilité du code étant immédiat. Elle permet aussi de repérer, au passage, les contenus dont la mise en forme reposait entièrement sur ces balises et qui demanderont une reprise éditoriale.
Nettoyer les conteneurs vides
Les paragraphes vides, les conteneurs sans contenu et les sauts de ligne accumulés proviennent des conversions successives. Leur suppression allège considérablement le code sans rien changer à l'affichage, sauf dans les cas où ils servaient d'espacement volontaire. Ce cas se repère à l'œil sur l'échantillon. La règle consiste à supprimer les éléments strictement vides et à laisser ceux contenant un espace insécable, souvent intentionnel. Le gain en poids est appréciable sur les contenus longs, où ces éléments peuvent représenter le quart du balisage.
Normaliser les titres
Les niveaux de titre sont fréquemment décalés après import, le titre principal se retrouvant dupliqué dans le contenu ou les sous titres partant du mauvais niveau. Un décalage systématique se corrige par un traitement, un décalage aléatoire demande une reprise manuelle. Cette hiérarchie compte pour l'accessibilité et pour le référencement, ce qui justifie l'effort. Le contrôle se fait rapidement avec un outil listant la structure des titres d'une page. Le cas le plus courant est le titre principal répété en tête du contenu, qui produit deux titres de premier niveau sur chaque page et se corrige par un traitement simple.
Traiter les classes orphelines
Les classes issues de l'ancien thème ne correspondent plus à aucune règle de style et encombrent le code sans effet. Leur suppression est sans risque une fois vérifié qu'aucune règle du nouveau thème ne porte le même nom. Cette vérification prend deux minutes et évite de retirer une classe redevenue utile par coïncidence. Certaines méritent d'être conservées et redéfinies plutôt que supprimées. Une classe désignant un encadré ou une mise en exergue peut retrouver un sens en écrivant quelques règles dans le nouveau thème, ce qui coûte moins cher que de reprendre les contenus concernés.
| Passe | Risque | Contrôle associé |
|---|---|---|
| Correction de l'encodage | Élevé si double conversion | Comptage des séquences suspectes |
| Suppression des styles en ligne | Moyen | Relevé préalable des propriétés |
| Balises obsolètes | Faible | Comparaison du texte extrait |
| Conteneurs vides | Faible | Vérification visuelle sur échantillon |
| Hiérarchie des titres | Moyen | Liste de structure par page |
| Classes orphelines | Faible | Recherche dans le nouveau thème |
| Adresses d'images | Élevé | Contrôle des liens brisés |
| Liens internes | Élevé | Exploration complète du site |
Images et liens, les deux points sensibles
Ce sont les deux domaines où une erreur se voit immédiatement et se répare difficilement. Ils méritent un traitement séparé, mené après le nettoyage du balisage.
Les adresses d'images absolues
Les images importées pointent souvent encore vers l'ancien domaine, ce qui fonctionne tant que l'ancien site est en ligne et cesse brutalement le jour où il est éteint. Le remplacement de l'ancien domaine par le nouveau doit être fait avant cette extinction. Cette dépendance invisible est la cause la plus fréquente de sites qui perdent leurs images trois mois après une migration. Un comptage des occurrences de l'ancien domaine, mené régulièrement, en donne l'état. Tant que ce compteur n'est pas à zéro, l'ancien hébergement ne doit pas être résilié.
Rapatrier les fichiers
Remplacer l'adresse ne suffit pas si le fichier n'a pas été copié. Un script parcourant les contenus, téléchargeant les images distantes et les réenregistrant dans la bibliothèque règle la question. Plusieurs extensions le proposent et leur résultat doit être vérifié, certaines échouant silencieusement sur les fichiers volumineux ou sur les noms comportant des caractères accentués. Le comptage des images effectivement importées est le seul contrôle fiable. Comparer le nombre d'adresses distantes présentes avant traitement au nombre de fichiers ajoutés à la bibliothèque donne immédiatement l'écart.
Les attributs de dimension
Les dimensions écrites en dur dans les balises d'image proviennent de l'ancien gabarit et ne correspondent plus au nouveau. Elles empêchent l'adaptation aux écrans et provoquent des déformations. Les retirer laisse le thème gérer l'affichage, sauf sur les thèmes qui s'appuient sur ces attributs pour réserver l'espace. Ce point doit être tranché selon le thème retenu. Lorsque les attributs sont conservés, ils doivent être recalculés à partir des dimensions réelles du fichier plutôt que laissés à leur valeur d'origine.
Le texte de remplacement
Les attributs de remplacement sont souvent vides ou remplis avec le nom du fichier, ce qui n'aide personne. Une campagne de rattrapage sur les images les plus visibles apporte un gain réel en accessibilité. Elle ne peut pas être automatisée honnêtement, un texte généré à partir du nom de fichier n'ayant aucune valeur descriptive. Mieux vaut traiter cent images correctement que cinq mille automatiquement. Un texte de remplacement inventé mécaniquement dégrade l'expérience des personnes qui en dépendent, ce qui est pire que son absence.
Les liens internes vers l'ancienne structure
Les liens présents dans les contenus pointent vers les adresses de l'ancien système, qui ne correspondent plus à la nouvelle arborescence. Les redirections mises en place lors de la migration les rattrapent, au prix d'un saut supplémentaire à chaque clic. Réécrire ces liens vers leur destination finale améliore l'expérience et la circulation de la valeur interne. La table de correspondance établie pour les redirections sert directement à ce travail. Le traitement est mécanique et il doit être vérifié par une exploration complète, une correspondance erronée envoyant les visiteurs vers un contenu sans rapport.
Les liens externes morts
Un contenu ancien comporte des liens vers des sites disparus ou réorganisés. Une exploration complète du site après nettoyage donne la liste des destinations en erreur. Le traitement dépend du contexte : retirer le lien en conservant le texte, le remplacer par une source équivalente ou pointer vers un archivage. Cette revue est fastidieuse et elle améliore sensiblement la qualité perçue des contenus anciens. Les mécanismes d'import et d'export de contenus sont par ailleurs décrits dans notre article sur la façon d'importer et exporter des articles WordPress.
Répartition des motifs relevés sur des bases de contenus migrées depuis des systèmes de gestion de contenu anciens.
Contrôler et sécuriser le résultat
Un traitement de masse doit être vérifié autrement que par un coup d'œil sur trois pages. Quelques contrôles simples donnent une assurance raisonnable.
Comparer le texte extrait
Le contrôle le plus efficace consiste à extraire le texte brut de chaque contenu avant et après traitement, puis à comparer. Toute différence signale une perte de contenu, ce qui est le risque principal. Une comparaison automatisée sur l'ensemble de la base prend quelques minutes et attrape ce qu'aucune relecture ne verrait. C'est le contrôle à mettre en place en priorité. Une tolérance doit être prévue sur les espaces et les retours à la ligne, dont la normalisation est attendue et sans conséquence.
Vérifier le nombre d'éléments
Compter les images, les liens et les tableaux avant et après donne un second signal. Une baisse du nombre d'images indique qu'une passe en a supprimé, ce qui n'était pas prévu. Ces comptages se scriptent en quelques lignes et se relisent d'un coup d'œil dans un tableau. Ils complètent utilement la comparaison textuelle. Un écart isolé sur un contenu précis se vérifie ensuite à la main en quelques secondes, ce qui referme la boucle.
Assainir le balisage restant
Un contenu importé peut contenir des balises indésirables, scripts inclus, héritées d'anciennes insertions. Un passage par une fonction d'assainissement, avec une liste blanche de balises et d'attributs autorisés, ferme cette porte. Cette précaution vaut particulièrement lorsque l'ancien système autorisait le code libre dans les contenus, sujet que nous abordons dans notre article sur la sécurité et le nettoyage du code HTML avec TinyMCE.
Relire un échantillon à l'œil
Les contrôles automatiques ne remplacent pas une lecture humaine sur une vingtaine de pages, choisies parmi les plus visitées et les plus anciennes. Cette relecture attrape les problèmes de mise en forme que les comptages ne voient pas. Elle prend une demi heure et elle donne la confiance nécessaire pour publier. C'est aussi l'occasion de repérer des contenus qui mériteraient d'être mis à jour sur le fond. Cette liste secondaire alimente utilement le plan éditorial des mois suivants.
Publier par lots
Appliquer le nettoyage à l'ensemble de la base en une fois rend tout diagnostic difficile. Traiter par lots de quelques centaines, avec un contrôle entre chaque, permet d'arrêter au premier problème. Cette progression allonge l'opération et elle la rend réversible à chaque étape. Sur plusieurs milliers de contenus, c'est la seule façon raisonnable de procéder. Commencer par les contenus les moins consultés limite en outre l'exposition en cas de problème sur le premier lot.
Consigner ce qui a été fait
Une note listant les passes appliquées, leur ordre et les motifs volontairement laissés de côté évite qu'un successeur ne relance un traitement déjà mené. Elle permet aussi de reprendre le travail plus tard sur les motifs mis en attente. Cette documentation tient sur une page et elle fait partie de la livraison. Sans elle, la question de savoir si le nettoyage a été fait revient à chaque intervention ultérieure. Elle doit préciser les motifs volontairement laissés de côté et la raison de ce report, faute de quoi ils seront redécouverts plus tard et traités comme des défauts du nettoyage initial.
💬 0 commentaires
✍️ Laisser un commentaire
Créez un compte gratuit ou connectez-vous pour commenter.