redirect-map-large-site-migration.html
< BACK Carte annotée sur papier sur un bureau en bois avec des flèches à l'encre rouge et une tasse de thé froide, lumière de fenêtre grise

Comment construire une carte de redirection pour une migration de site avec 20 000 URLs

En 2021, un grand détaillant britannique a confié à Seahawk un projet de migration pour un site avec un peu plus de 22 000 URLs indexées. L'équipe de développement travaillait déjà sur la nouvelle plateforme depuis quatre mois. Ils avaient une date de lancement. Ils avaient un site de staging. Ce qu'ils n'avaient pas, et auxquels ils n'avaient honnêtement pas pensé, c'était une cartographie des redirections. Pas une approximative. Aucune. Le plan du responsable SEO était de « la gérer après le lancement ». Je repense encore à cette réunion parfois.

Nous avons reporté le lancement de trois semaines. Reconstruit la stratégie de redirection à partir de zéro. Le site a été lancé proprement, a conservé 94 % de son trafic organique pendant la transition, et le client nous a envoyé une bouteille de Scotch. Ces trois semaines de délai les ont sauvés de ce qui aurait presque certainement été un processus de récupération de six mois.

Voici comment construire réellement une cartographie des redirections pour un site à cette échelle, le processus, les outils, la logique de priorisation, et les éléments que la plupart des guides de migration passent discrètement sous silence.

---

Commencez par un inventaire complet des URLs

Vous ne pouvez pas cartographier ce que vous n'avez pas compté. Avant toute chose, vous avez besoin d'une exportation complète de chaque URL en direct et indexée sur le site d'origine. Pas seulement le sitemap. Les sitemaps mentent, ils sont souvent obsolètes, ils excluent les URLs paginées, et ils omettent régulièrement les pages de produits ou d'archives qui ont accumulé des liens au fil des années.

J'utilise Screaming Frog SEO Spider en mode liste contre une source combinée : le sitemap XML plus une exportation de Google Search Console de toutes les URLs indexées. Ces deux sources ensemble révèlent presque toujours les URLs que l'une ou l'autre manque. Pour un site de 20 000 URLs, attendez-vous à ce que le nombre réel de pages trouvées se situe entre 18 000 et 35 000, pagination, filtres, navigation à facettes, tout.Screaming Frog SEO Spider in list mode against a combined source: the XML sitemap plus a Google Search Console export of all indexed URLs. Those two sources together almost always surface URLs the other misses. For a 20,000-URL site, expect the real crawl count to come back anywhere between 18,000 and 35,000, pagination, filters, faceted nav, all of it.

Exportez le crawl dans une feuille de calcul. Vous voulez au minimum : URL, statut HTTP, balise title, H1, nombre de liens internes entrants, et si elle apparaît dans GSC avec des impressions. Cette dernière colonne a plus d'importance que les gens ne l'admettent.

N'oubliez pas les 404 qui reçoivent encore du trafic

Pendant que vous êtes dans GSC, tirez le rapport Coverage et récupérez chaque URL que Google a essayé de crawler au cours des six derniers mois, y compris les 404 existants. Certaines de ces pages cassées ont encore des backlinks externes qui les pointent. J'ai vu une 404 avec 40 domaines référents sur un site qui n'avait pas été maintenu depuis deux ans. Ceux-ci ont aussi besoin d'une destination.

---

Catégorisez Avant de Cartographier

Une liste plate de 20 000 URLs est inutilisable. La première chose que je fais après l'exportation du crawl est de catégoriser chaque URL par type, car la logique de mappage est complètement différente selon ce qu'est une URL.is.

Voici la taxonomie approximative que j'utilise :

  • Pages de produits, mappage 1:1 vers la nouvelle URL de produit si possible, 1:1 map to new product URL where possible
  • Pages de catégories / collections, mappage vers la nouvelle catégorie équivalente, ou catégorie parente la plus proche, map to equivalent new category, or nearest parent
  • Articles de blog / articles, correspondance par slug, similarité de titre, ou cluster thématique, match by slug, title similarity, or topic cluster
  • Les pages de tags et d'archives, généralement consolider vers une catégorie ou la page d'accueil, usually consolidate to category or homepage
  • Les URLs paginées (ex. /category/shoes/page/3), presque toujours → catégorie parent (e.g. /category/shoes/page/3), almost always → parent category
  • Les URLs générées par les utilisateurs ou liées aux comptes, généralement supprimer ou rediriger vers la connexion, usually drop or redirect to login
  • Les anciennes pages de destination de campagne, évaluer l'équité des liens avant de décider, evaluate link equity before deciding
  • Les variantes dupliquées/canoniques, rediriger vers la canonique, point final, redirect to the canonical, full stop

Faire cette étape de catégorisation dans Google Sheets avec une colonne dropdown prend un couple d'heures. Ça épargne des jours. Une fois que tout est saisi, vous pouvez traiter chaque catégorie avec un ensemble de règles différent plutôt que de prendre 20 000 décisions individuelles.

---

La phase d'appariement : automatisée en premier, manuelle en second

C'est là que la plupart des équipes se trompent. Elles essaient d'associer manuellement chaque URL. Avec 20 000 lignes, ce n'est pas rigoureux, c'est une dépression nerveuse qui attend de se produire.

Mon processus c'est l'appairage automatisé d'abord, l'examen manuel ensuite, uniquement pour les URLs qui comptent vraiment.

Association automatisée avec VLOOKUP et Python

Pour les sites où la structure d'URL est similaire entre l'ancienne et la nouvelle version (par exemple /products/red-shoes/ devenant /shop/red-shoes/), une simple VLOOKUP dans Sheets sur la portion slug résout 60–70 % de la liste en moins de dix minutes. Le find/replace basé sur Regex gère les changements de motifs structurels./products/red-shoes/ becoming /shop/red-shoes/), a simple VLOOKUP in Sheets on the slug portion sorts out 60–70% of the list in under ten minutes. Regex-based find/replace handles structural pattern changes.

Pour les migrations plus complexes, les changements de plateforme, les redesigns complets de l'architecture informationnelle, j'utilise un court script Python qui fait de l'appairage flou sur les titres de pages entre l'export de crawl ancien et le crawl du nouveau site. La librairie thefuzz (anciennement FuzzyWuzzy) le fait bien. Tout ce qui dépasse un score de correspondance de 85% reçoit une attribution automatique. Tout ce qui est en dessous va dans une file d'examen manuel.thefuzz library (formerly FuzzyWuzzy) does this well. Anything above an 85% match score gets auto-assigned. Anything below goes into a manual review queue.

La file d'attente manuelle représente généralement 20–30 % de la liste. Pas tout ne nécessite une attention senior.

Prioriser la file d'attente manuelle

Pas les 20 000 URL ne méritent un temps égal. Je note chaque URL selon :

  1. Les impressions GSC des 90 derniers jours, si ça génère du trafic de recherche, c'est haute priorité, if it's driving search traffic, it's high priority
  2. Le nombre de domaines référents (extrait d'Ahrefs), l'équité des liens que vous ne pouvez pas vous permettre de perdre (pulled from Ahrefs), link equity you can't afford to drop
  3. Le nombre de liens internes du crawl, signals l'importance structurelle, signals structural importance
  4. Attribution des revenus : si le client peut fournir des données d'ecommerce GA4, les pages générant des conversions remontent en haut de liste., if the client can provide GA4 ecommerce data, pages driving conversions jump to the top

Tout ce qui comporte des impressions, des backlinks ou du revenu nécessite une décision de mapping manuel. Tout le reste peut suivre une règle de secours (généralement → catégorie parente ou homepage). Honnêtement, pour un site de 20 000 URL, peut-être 800–1 200 URL ont vraiment besoin d'attention individuelle. Le reste, c'est de la vermine long-tail.

---

Structurer le document de carte de redirection

La carte finale se trouve dans une feuille de calcul. Simple. Aucun outil sophistiqué nécessaire à ce stade, le fichier doit juste être sans ambiguïté et importable.

Les colonnes que j'utilise :

  1. URL source (URL complète et absolue de l'ancienne page)
  2. URL de destination (URL complète et absolue de la nouvelle page)
  3. Type de redirection (301 dans presque tous les cas, 302 uniquement pour du vraiment temporaire, ce qui est rare).
  4. Type de correspondance (exact / pattern / regex)
  5. Catégorie (de l'étape de taxonomie)
  6. Niveau de priorité (Haut / Moyen / Bas, basé sur le scoring ci-dessus).
  7. Statut (En attente / Confirmé / Implémenté / Testé)
  8. Remarques

Cette colonne « Notes » est sous-estimée. C'est là que vous mettez des choses comme « client a confirmé que ce produit est arrêté, rediriger vers la catégorie » ou « backlink de Forbes pointant ici, rediriger vers l'équivalent le plus proche et non la page d'accueil ». Le vous de demain remerciera le vous d'aujourd'hui.

Conservez les URLs source exactement comme elles apparaissent, avec ou sans slash de fin, avec query strings le cas échéant. L'incohérence ici provoque des correspondances partielles et des redirections manquées qui sont un cauchemar à diagnostiquer après le lancement.

---

Redirections basées sur des pattern ou exactes

À cette échelle, vous avez absolument besoin de redirections basées sur des motifs, pas seulement des correspondances exactes. Écrire 20 000 lignes Redirect 301 individuelles dans un fichier .htaccess fonctionne, certes, mais c'est fragile, lent à analyser et un désastre de maintenance.Redirect 301 lines in an .htaccess file is, well, it works, but it's fragile, slow to parse, and a maintenance disaster.

Pour les configurations Apache/WordPress, j'utilise des RewriteRules basées sur regex pour les motifs structurels. Par exemple, si chaque ancienne URL sous /old-blog/[post-slug]/ correspond à /insights/[post-slug]/, c'est une règle, pas 4 000.regex-based RewriteRules for structural patterns. For example, if every old URL under /old-blog/[post-slug]/ maps to /insights/[post-slug]/, that's one rule, not 4,000.

Sur Nginx, le même principe s'applique avec les directives rewrite. Sur Cloudflare, vous pouvez utiliser Bulk Redirects (leur offre gratuite gère jusqu'à 20 règles de correspondance exacte ; Workers ou le produit payant Redirect Rules gère la logique de motif à grande échelle).rewrite directives. On Cloudflare, you can use Bulk Redirects (their free tier handles up to 20 exact-match rules; Workers or the paid Redirect Rules product handles pattern logic at scale).

Le document de mapping doit signaler quelles redirections sont admissibles à des motifs par rapport à celles qui ont besoin d'une correspondance exacte. Généralement : les articles de blog, les produits et les pages de catégorie suivent des motifs. Les anciennes pages de campagne, les anciens sous-domaines et les URL historiques étranges ont besoin d'une correspondance exacte.

Testez les motifs avant leur mise en ligne

J'exécute l'ensemble des règles de motif complet par rapport à la liste d'URL dans un environnement de staging et je journalise chaque réponse de redirection avec un outil comme Redirect Checker (en masse) ou une boucle curl en bash. Chaque redirection en chaîne (ancien → intermédiaire → nouveau) est un problème : Google suivra les chaînes mais perd du jus de lien à chaque étape. Aplatissez-les avant le lancement.Redirect Checker (bulk) or a curl loop in bash. Every chain redirect (old → interim → new) is a problem, Google will follow chains but loses some link equity at each hop. Flatten them before launch.

---

Gérer la Long Tail : la stratégie de secours

Voilà le truc avec un site de 20 000 URL : plusieurs milliers de ces URL n'ont probablement zéro trafic, zéro backlinks et aucune raison pour que quiconque les visite à nouveau. Les rediriger toutes vers la page d'accueil crée un problème différent : cela semble manipulateur pour Google et cela confond les utilisateurs qui ont suivi un lien spécifique.

Ma hiérarchie de secours :

  • Si l'URL est une page de sous-catégorie sans trafic et sans liens → rediriger vers la catégorie parente
  • Si c'est une archive par tag ou par auteur → rediriger vers l'index du blog
  • Si c'est vraiment une page orpheline sans équivalent logique → la laisser en 404, ou rediriger doucement vers une page 404 bien conçue avec navigation

Une bonne page 404 personnalisée avec recherche contextuelle et liens de catégories populaires récupère plus de ces visites qu'une redirection en masse vers l'accueil. J'en ai créé une pour un client Seahawk l'an dernier, elle avait un taux de « récupération » de 28 % (utilisateurs navigant depuis le 404 vers une autre page) contre environ 9 % avant.

---

Validation post-lancement

La carte de redirection ne s'arrête pas au lancement. Les 72 premières heures sont critiques.

J'ai configuré la vérification de la propriété GSC la veille du lancement, puis je surveille le rapport Coverage quotidiennement pendant les deux premières semaines. Les nouvelles erreurs 404 qui apparaissent après le lancement signifient généralement des URL qui ont échappé à l'inventaire, des variantes de paramètres non autorisées, des alternates hreflang, ou des anciennes URL dans les campagnes email externes.

Pour chaque nouveau 404 que je trouve, j'ajoute une redirection et je la pousse. Les petits incendies. Vous voulez les attraper avant que Googlebot abandonne complètement ces URLs.

Vérifiez aussi vos logs serveur. Pas seulement GSC. Googlebot visite des URLs qui ne sont liées nulle part en fonction de ses propres données de crawl historique. L'analyse des logs (j'utilise GoAccess pour des lectures rapides sur les petits serveurs) révèle des erreurs 404 que GSC met parfois une semaine ou plus à signaler.

---

FAQ

Combien de temps faut-il réellement pour construire une carte de redirection pour 20 000 URLs ?

Réalistement, budgétisez deux à trois semaines d'effort à temps partiel, peut-être 40–60 heures au total selon la complexité de la structure d'URL de l'ancien site. La phase de correspondance automatisée est rapide. L'examen manuel des URLs prioritaires et la phase de validation demandent le plus de temps. Ne laissez jamais un client ou un PM vous dire que c'est faisable "en un week-end".

Dois-je rediriger chaque URL, ou c'est acceptable de laisser certains 404 ?

C'est acceptable de laisser les URLs véritablement mortes, sans trafic, sans backlink, afficher un 404 naturel. Forcer une redirection vers une page non pertinente crée un signal soft-404 qui est franchement pire. Triez sans pitié. Redirigez ce qui compte, et investissez dans une bonne expérience 404 personnalisée pour le reste.

Quel type de redirection dois-je utiliser, 301 ou 302 ?

301 (permanent) pour presque tout dans une migration. Un 302 dit à Google que le déplacement est temporaire et il conservera l'ancienne URL dans l'index. J'ai vu des agences utiliser des 302 « pour être prudentes » et ensuite regarder l'ancien domaine continuer à se classer pendant que le nouveau stagne pendant des mois. Utilisez 301.

Puis-je utiliser un plugin pour gérer 20 000 redirections sur WordPress ?

Oui, mais choisissez avec soin. Redirection de John Godley gère les gros volumes bien et stocke les règles dans la base de données plutôt que dans .htaccess, ce qui est mieux pour la performance à grande échelle. Pour plus de ~10 000 redirections de correspondance exacte, je recommanderais quand même de migrer les règles basées sur des motifs vers la configuration serveur plutôt que de dépendre entièrement d'un plugin.Redirection by John Godley handles large volumes well and stores rules in the database rather than .htaccess, which is better for performance at scale. For anything above ~10,000 exact-match redirects, I'd still recommend migrating pattern-based rules to server config rather than relying entirely on a plugin.

Quelle est l'erreur la plus courante que les équipes commettent lors de migrations importantes ?

Commencer la cartographie des redirections trop tard. Je le vois constamment : le travail de développement est à 90 %, le lancement est prévu dans deux semaines, et quelqu'un demande "et les redirections, alors ?". À ce stade, vous êtes en mode crise et inévitablement vous oubliez des choses. La cartographie des redirections doit commencer à être construite dès que la structure d'URL du nouveau site est confirmée. Un flux parallèle, pas une réflexion tardive.

---

Trois semaines de retard, une bouteille de Scotch, 94% de rétention du trafic. Les maths pour bien faire les choses sont plutôt simples.

La cartographie des redirections n'est pas la partie glamour d'une migration. Personne ne la met dans la bannière héros d'une étude de cas. Mais c'est la différence entre une migration et une récupération, et je sais laquelle j'aimerais facturer.

< BACK