# Migrer les redirections d’un site WordPress de 30 000 URL sans casser le SEO

> Retour d'expérience sur une refonte de structure d'URL à grande échelle, avec un plan de redirection généré automatiquement à partir de l'ancien plan de site.

- Auteur : WordPress Développement
- Publié le : 2023-01-09
- Mis à jour le : 2023-01-09
- Catégorie : SEO &amp; GEO
- URL : https://www.wpmoderne.fr/seo/migrer-redirections-30000-urls-refonte-sans-perdre-seo/

## L’essentiel

- Un tableur pivot, pas des règles écrites à la main
- Générer depuis l'ancien sitemap XML
- Vérifier par lots de 1 000 URL

30 412 URL à rediriger, une nouvelle arborescence par catégorie de produit au lieu de l'ancienne à plat, et un délai de bascule d'un week-end : ce sont les contraintes du dernier projet de refonte que nous avons mené pour un site e-commerce construit sur WooCommerce depuis 2016.

Rédiger 30 000 règles de redirection à la main n'était pas envisageable, ni fiable. La solution retenue a consisté à générer le plan de redirection automatiquement à partir de l'ancien plan de site XML, en le croisant avec la nouvelle arborescence produite par l'équipe UX.

## Le point de départ : exploiter le sitemap existant plutôt que la base de données

Partir directement de la base de données WordPress pour lister les URL à rediriger est tentant, mais elle contient aussi des brouillons, des révisions et des pages jamais indexées. Le sitemap XML généré par l'extension SEO en place est une source plus fiable : il ne référence que les URL que Google connaît réellement, celles qui ont de la valeur à préserver.

Un script PHP exécuté en ligne de commande a parcouru chaque fichier `sitemap-produits-N.xml`, extrait les balises `<loc>`, et construit un tableau associatif ancienne URL vers identifiant de produit :

```
$xml = simplexml_load_file( $fichier_sitemap );
foreach ( $xml->url as $entree ) {
    $ancienne_url = (string) $entree->loc;
    $id_produit   = wc_get_product_id_by_sku( extraire_sku( $ancienne_url ) );
    $mapping[ $ancienne_url ] = $id_produit;
}
```

## Construire le mapping vers la nouvelle arborescence

> L'essentiel à retenir : Un tableur pivot, pas des règles écrites à la main ; Générer depuis l'ancien sitemap XML ; Vérifier par lots de 1 000 URL

La nouvelle arborescence organisait les produits par catégorie et sous-catégorie, avec des permaliens du type `/categorie/sous-categorie/produit/` au lieu de l'ancien `/produit/` à plat. À partir de l'identifiant produit récupéré à l'étape précédente, un second script a interrogé la nouvelle structure de taxonomies déjà en place sur l'environnement de recette, pour reconstruire l'URL cible :

```
foreach ( $mapping as $ancienne_url => $id_produit ) {
    $nouvelle_url = generer_nouvelle_url( $id_produit );
    $lignes[] = [ $ancienne_url, $nouvelle_url ];
}
exporter_csv( $lignes, 'plan-redirections.csv' );
```

Ce fichier CSV, une fois exporté, a été relu manuellement par lots de 1 000 lignes dans un tableur partagé, pour repérer les cas particuliers : produits fusionnés, produits retirés du catalogue (redirigés vers la catégorie parente plutôt que vers une fiche inexistante), variantes de couleur qui pointaient auparavant vers des URL distinctes.

## De 30 000 lignes de tableur à des règles applicables

Le tableur validé a ensuite été converti en règles pour l'extension Redirection, via son import CSV natif, plutôt qu'en modifiant le fichier `.htaccess` directement : au-delà de quelques milliers de règles, Apache ralentit sensiblement le traitement de chaque requête si les règles sont mal ordonnées. L'extension Redirection stocke ses règles en base et les indexe, ce qui a mieux tenu la charge à la bascule.

Les redirections ont été découpées par lot de 1 000 pour l'import, avec vérification de chaque lot via un script de contrôle qui interrogeait chaque nouvelle URL en HTTP HEAD et validait un code 200 avant de considérer le lot comme conforme :

- Vérification du code retour de chaque redirection (301 attendu, jamais de chaîne vers une seconde redirection).
- Vérification que l'URL cible retourne bien un 200, pas un 404 masqué par une page de contenu générique.
- Contrôle qu'aucune boucle ne se forme entre ancienne et nouvelle arborescence.

## La bascule et le suivi post-migration

La bascule s'est faite un vendredi soir, avec resoumission du nouveau sitemap dans Search Console dès la publication, et surveillance quotidienne du rapport de couverture pendant les six semaines suivantes. Les erreurs « Page avec redirection » ont été suivies de près : leur volume devait décroître semaine après semaine, signe que Google recrawlait et acceptait progressivement les nouvelles URL comme canoniques.

> Un plan de redirection généré depuis le sitemap plutôt que depuis la base de données évite d'embarquer du bruit — brouillons, doublons, pages jamais indexées — dans un chantier déjà volumineux.

## En résumé

Migrer 30 000 URL sans perte de trafic organique tient moins à la puissance du serveur qu'à la rigueur du plan de redirection : partir d'une source fiable (le sitemap plutôt que la base brute), automatiser la génération du mapping, mais garder un contrôle humain par lots pour les cas particuliers. Le suivi ne s'arrête pas à la bascule : les six premières semaines dans Search Console indiquent si Google a bien transféré la valeur des anciennes URL vers les nouvelles.
