Migrer un WordPress vers headless sans casser le SEO est possible, mais demande un inventaire URL exhaustif avant la bascule. J'ai vu deux sites perdre 40 % de leur trafic organique en trois semaines suite à une migration faite sans cartographier les URLs existantes. Le code Next.js était impeccable, le déploiement aussi. Personne n'avait listé les 320 redirections nécessaires. Voici la checklist que j'utilise sur chaque projet de migration.
Avant toute ligne de code Next.js, je liste toutes les URLs indexées par Google. Pas seulement les articles : les pages d'archive, les tags, les catégories, les pièces jointes, les flux RSS, les pages d'auteur.
Sources à croiser :
/sitemap.xml ou /sitemap_index.xml (Yoast/Rank Math).Sortir un fichier CSV unique avec : URL actuelle, code HTTP, nombre d'impressions Search Console sur 12 mois, position moyenne, titre actuel.
Sur un site PME de 80 pages visibles dans l'admin, l'inventaire réel ramène en moyenne 280 à 450 URLs indexées. C'est l'écart qui tue les migrations bâclées.
Pour chaque URL inventoriée, décider :
| Ce qui peut casser | Comment l'éviter |
|---|---|
URLs /category/xxx/ non redirigées | Lister toutes les archives Yoast/Rank Math et décider d'un schéma cible |
URLs ?p=123 (permaliens par ID) | Vérifier qu'aucun lien externe ne pointe encore vers elles ; 301 vers le slug |
Pièces jointes /?attachment_id= | 410 systématique sauf cas particulier (PDF, médias téléchargeables) |
Flux RSS /feed/ | À conserver sur le nouveau site, même URL, même format |
Pagination /page/2/ | Reproduire la même logique sur le front Next.js |
| URLs avec accents non encodés | Tester l'encodage UTF-8 dans les redirections, sinon 404 |
| URLs avec trailing slash incohérent | Choisir une convention (avec ou sans) et la forcer côté Next.js |
Les redirections se gèrent dans next.config.js (jusqu'à environ 1 000 entrées) ou en edge middleware au-delà. Pour un site de 300+ URLs, je préfère un fichier JSON dédié importé par le middleware.
Le sitemap est le contrat avec Google. Trois pièges courants :
sitemap.ts qui automatise ça depuis la version 13.3.robots.txt avec Sitemap: https://domaine.tld/sitemap.xml.Côté robots.txt, autoriser explicitement les bots AI nouveaux (GPTBot, PerplexityBot, ClaudeBot) ou les bloquer — mais le faire en conscience. Bloquer GPTBot fait disparaître votre site des résultats ChatGPT Search.
C'est l'étape souvent négligée par les développeurs front-end. Sur un WordPress classique, les plugins SEO (Yoast, Rank Math) injectent automatiquement du JSON-LD Article, Organization, BreadcrumbList, FAQPage.
Sur Next.js, rien n'est automatique. Il faut :
generateMetadata ou composant inline).FAQPage et HowTo — ce sont les types les plus cités par les AI search en 2026.Sur les sites que j'ai migrés, la perte de rich results pendant les 3 premières semaines post-bascule était systématique quand le JSON-LD n'avait pas été reconstitué dès le jour J.
L'inventaire doit inclure, pour chaque URL conservée :
Sur Next.js, le generateMetadata doit reproduire à l'identique ces données pour les URLs conservées. Toute variation, même mineure (ajout d'un suffixe " | Mon site" oublié) peut faire perdre 10 à 20 % d'impressions le temps que Google ré-indexe.
Une semaine avant la bascule DNS, je fais tourner le nouveau site sur un sous-domaine type preview.domaine.tld (protégé par noindex et basic auth pour ne pas être crawlé).
La check-list de recette :
Bascule TTL DNS à 300 secondes 48h avant l'opération. Le jour J :
Pic d'erreurs 404 attendu dans les 24 à 48h post-bascule, le temps que Googlebot re-crawle. Si les redirections sont bien faites, le pic redescend en 5 à 10 jours. Si le trafic organique baisse de plus de 15 % à J+14, il y a un problème de redirection ou de schema à investiguer.
Si votre site a moins de 30 pages indexées et un trafic organique inférieur à 1 000 visites/mois, l'effort de migration SEO peut dépasser le bénéfice. Un WordPress optimisé (cache, CDN, images WebP, plugin SEO bien configuré) atteindra des résultats proches pour une fraction du coût.
Autre cas où je déconseille : un site dont les positions Google sont fragiles (positions 8 à 15 sur des requêtes commerciales). Une migration mal exécutée peut faire chuter ces positions en 30e place, et la récupération prend 3 à 6 mois. Si le SEO est votre seul canal d'acquisition, sécurisez d'abord, migrez ensuite.
Migrer un WordPress vers headless sans casser le SEO repose sur trois piliers : inventaire URL exhaustif, mapping 301 sans trou, JSON-LD reconstitué dès le jour J. Le code Next.js est la partie facile. Pour une vue d'ensemble de l'architecture, voir la page WordPress headless.