oving from WordPress to Next.js is not inherently good or bad for SEO. Search engines do not reward a framework name. They respond to the result: whether important URLs remain discoverable, useful content survives, redirects are exact, HTML is reliably rendered and the new pages are understandable and fast.
Treat the change as a site migration first and a redesign second. The old site is evidence. Its URLs, queries, backlinks, metadata, structured data, internal links and conversion paths form a baseline that the new build must deliberately preserve or improve.
- Export every indexable WordPress URL from XML sitemaps, a crawler and Search Console; no single source is complete.
- Record each URL's status, canonical, title, description, headings, structured data, internal links, traffic, conversions and backlinks.
- Separate media URLs, attachment pages, archives, pagination and parameters from genuine landing pages.
- Mark pages to preserve, consolidate, retire or rewrite. Give every old URL an explicit outcome.
- Capture screenshots and rendered HTML for high-value pages so semantic and visual regressions can be reviewed.
Changing CMS does not require changing every URL. Keeping a clear, successful path reduces risk. When a change is justified, map the old URL to the closest equivalent new page—not automatically to the homepage and not through a chain of intermediate redirects.
ts
// next.config.ts const redirects = [ { source: '/old-services/ios-development/', destination: '/ios', permanent: true, }, { source: '/blog/legacy-buying-guide/', destination: '/blog/how-to-choose-a-web-development-agency', permanent: true, }, ]; export default { async redirects() { return redirects; } };
Build the redirect map as data and test it automatically. Each retired URL should produce one permanent hop to a live, relevant destination. Handle trailing slashes, casing and parameters intentionally. Do not redirect unrelated missing pages merely to suppress 404 reports.
Replace shortcode remnants and page-builder wrappers without removing the answer, proof, headings, images, captions, author context, dates and links that made the page valuable. Rewriting everything at once makes it harder to distinguish a platform problem from a content change.
- Match old and new page intent before comparing paragraph counts.
- Keep one clear H1 and a logical heading hierarchy.
- Move useful image alt text and captions; redirect valuable media URLs where practical.
- Carry over canonical intent, robots directives and social metadata.
- Recreate structured data from visible facts instead of copying stale JSON-LD.
- Update internal links to final URLs instead of relying on redirects.
Priority content and navigation should exist in the initial HTML. Client interactivity can enhance the page, but crawlers should not need to click, scroll or call a private API to discover the main copy. Static generation or incremental regeneration usually fits marketing pages; authenticated dashboards should remain request-rendered.
tsx
// app/guides/[slug]/page.tsx export const revalidate = 86_400; export async function generateStaticParams() { return publishedGuides.map((guide) => ({ slug: guide.slug })); }
Crawl both the live WordPress site and protected staging build with the same rules. Compare URL counts, indexability, status codes, titles, canonicals, headings, schema, images and internal-link depth. A polished staging homepage says nothing about thousands of long-tail URLs.
- Test the redirect map against the complete old URL inventory.
- Confirm intended pages return 200 and retired pages return a deliberate redirect, 404 or 410.
- Ensure canonicals use the production hostname, never staging or localhost.
- Check robots.txt permits public assets and sitemap.xml lists only canonical indexable URLs.
- Validate rendered structured data and measure representative mobile templates.
Retain the old crawl, redirect map and benchmark exports. Submit the new sitemap, inspect priority URLs, watch coverage and crawl errors, and compare performance by page group. Brand demand and seasonality can conceal losses in one template.
Keep useful redirects long term. External links, bookmarks and old documents can send people to legacy URLs for years. If a domain changes, retain control of the old domain and HTTPS configuration.
Thesafemigrationisnottheonewiththefewestvisibleerrorsonlaunchday;itistheonewhereeveryvaluableoldURLhasatested,evidence-backedfuture.