Ongeveer 78% van de Nederlandse MKB-websites draait nog steeds op WordPress. Dat is geen toeval: het CMS is laagdrempelig, de Nederlandse hostingmarkt (TransIP, Antagonist, Vimexx, Hostnet) biedt one-click installaties, en duizenden bureaus in Amsterdam, Rotterdam, Utrecht en Eindhoven leveren standaard WordPress-templates op. Maar in 2026 begint die keuze te wringen. Core Web Vitals worden steeds zwaarder gewogen door Google, plugin-stacks slepen sites onder de Lighthouse-grens, en steeds meer ondernemers willen migreren naar een modern framework zoals Next.js 15 met de App Router.
Het probleem? Volgens onze eigen analyses bij Nederlandse klanten verliest circa 60% van de migrerende sites tussen 25% en 70% van hun organische SEO-verkeer in de eerste twee maanden na go-live — niet door de techniek, maar door een gebrekkige redirect-strategie en het ontbreken van een gestructureerde Change of Address-procedure in Google Search Console. Dat is verkeer dat een MKB-onderneming maanden kost om terug te winnen, en in sommige gevallen blijft het rankingsverlies permanent.
Deze gids is geen marketingbrochure. Het is de exacte checklist die wij intern gebruiken wanneer een Nederlandse klant ons vraagt om hun WordPress-site veilig over te zetten naar Next.js, zonder de hard verdiende posities op Google.nl op te offeren. We doorlopen zes fasen: URL-audit, 1:1 cartografie, implementatie van 301 redirects, Change of Address in Search Console, performance gains via Core Web Vitals, en de cruciale monitoring op 30, 60 en 90 dagen na de migratie.
1. URL-audit: breng eerst de complete WordPress-structuur in kaart
De grootste fout die Nederlandse bureaus maken bij een migratie is direct beginnen met het bouwen van Next.js-componenten zonder de bestaande URL-structuur volledig te documenteren. WordPress genereert namelijk veel meer URL's dan de meeste eigenaren beseffen: pagina's, posts, categorieën, tags, auteurs, attachment pages, archieven per maand, paginering (/page/2/, /page/3/), feeds (/feed/, /comments/feed/), en oEmbed-endpoints. Wanneer u een site host bij TransIP of Antagonist met WP Rocket of W3 Total Cache actief, zitten er bovendien vaak cached variants die als losse URL door Google zijn geïndexeerd.
Begin met een complete crawl via Screaming Frog SEO Spider (de gratis versie volstaat tot 500 URL's, daarboven heeft u de betaalde licentie nodig — voor de meeste Nederlandse MKB-sites is dat ruim voldoende). Configureer de crawler om robots.txt te respecteren, gebruik de user-agent "Screaming Frog SEO Spider" en stel de crawl-snelheid in op maximaal 5 URL's per seconde om uw shared hosting bij Vimexx of Hostnet niet te overbelasten.
Naast Screaming Frog haalt u uit Google Search Console drie exports op: de Pages-rapportage (Geïndexeerd én Niet geïndexeerd, beiden), de Sitemap-status, en de Performance-data over de afgelopen 16 maanden gegroepeerd op URL. Door deze drie bronnen te combineren in een Google Sheet of Airtable krijgt u de definitieve waarheid: welke URL's bestaan, welke worden geïndexeerd, en welke genereren daadwerkelijk verkeer of impressies.
Voor sites met meer dan 5.000 URL's adviseren we aanvullend een server log analyse via Splunk of een goedkoper alternatief zoals JetOctopus. De logbestanden van uw Nederlandse hostingprovider tonen welke URL's Googlebot daadwerkelijk regelmatig crawlt — dat zijn de URL's die u absoluut niet mag verliezen. Vraag uw TransIP- of Antagonist-supportteam om toegang tot de raw access logs van de afgelopen 90 dagen; meestal krijgt u die binnen 24 uur via een ticket.
Resultaat van fase 1: een masterspreadsheet met minimaal de kolommen oude URL, HTTP-status, geïndexeerd ja/nee, maandelijkse clicks, maandelijkse impressions, aantal backlinks (uit Ahrefs of de gratis SEO Review Tools), en belangrijkheidsscore 1-5. Deze score wordt het kompas voor de rest van het traject. Bij Go To Agency hanteren we vaak een 80/20-regel: 20% van de URL's genereert 80% van de waarde en die krijgen prioriteit in fase 2.
2. 1:1 cartografie: koppel elke oude URL aan een nieuwe Next.js-route
Met de masterspreadsheet in de hand begint het strategische werk: voor elke geïdentificeerde URL bepaalt u één van vier acties: 1:1 mapping (oude URL krijgt directe tegenhanger in Next.js), consolidatie (meerdere oude URL's wijzen naar één nieuwe, sterkere pagina), 410 Gone (de URL wordt definitief geschrapt zonder vervanging), of noindex behouden (URL blijft live maar wordt niet meer actief geoptimaliseerd).
De Next.js 15 App Router gebruikt een file-system based routing waarbij elke page.tsx binnen app/ automatisch een route wordt. Voor Nederlandse meertalige sites — denk aan een webshop die zowel /nl/ als /en/ bedient — werkt dit uitstekend met next-intl of de native i18n-config. Een typische WordPress-URL als /diensten/webdesign-amsterdam/ wordt in Next.js bijvoorbeeld app/[locale]/diensten/webdesign-amsterdam/page.tsx.
Let bij de cartografie op vier Nederlandse-specifieke valkuilen. Eén: WordPress voegt standaard een trailing slash toe, Next.js doet dat per default niet — kies één standaard en redirect de andere variant. Twee: WordPress-permalinks met datums (/2024/03/artikel-titel/) zijn slecht voor SEO en evergreen content; gebruik de migratie om naar een platte structuur over te gaan en mappeer de oude datumpaden naar de nieuwe. Drie: categorie- en tag-URL's worden vaak vergeten omdat ze door eigenaren als "onbelangrijk" worden bestempeld, maar Ahrefs-data laat zien dat ze gemiddeld 12-18% van het long-tail verkeer leveren bij Nederlandse blogs. Vier: hreflang-tags moeten meeverhuizen voor sites met nl/en/de/fr varianten.
Documenteer de mapping in een tweede spreadsheet of beter nog: een CSV-bestand met twee kolommen (source, destination) dat u in fase 3 direct kunt importeren in uw redirect-configuratie. Voor klanten die overwegen om de complete website-architectuur te herzien tijdens de migratie, raden we onze refonte-dienst aan — daarin combineren we de migratie met een gestructureerde herstructurering, wat de SEO-winst op middellange termijn vaak verdubbelt.
3. 301 redirects implementeren: next.config.js plus Cloudflare als safety net
Next.js 15 ondersteunt redirects natively via twee mechanismen: statische redirects in next.config.js (of next.config.ts) en dynamische redirects via middleware. Voor een migratie tot circa 1.000 redirects volstaat de statische aanpak; daarboven wordt de middleware-route performanter, omdat een gigantische redirects-array de build-tijd opblaast.
Een typische statische configuratie ziet er als volgt uit:
// next.config.ts
import type { NextConfig } from "next";
const config: NextConfig = {
async redirects() {
return [
{
source: "/diensten/webdesign-amsterdam/",
destination: "/nl/diensten/webdesign-amsterdam",
permanent: true,
},
{
source: "/2024/:slug/",
destination: "/nl/blog/:slug",
permanent: true,
},
{
source: "/category/:cat/",
destination: "/nl/blog?category=:cat",
permanent: true,
},
];
},
};
export default config;
De parameter permanent: true stuurt een HTTP 301-status; gebruik permanent: false alleen voor tijdelijke campagne-redirects (HTTP 307). Voor Nederlandse sites met meertalige varianten is het cruciaal dat u ook de oude WordPress-locale paden meeneemt — vaak vergeten teams de URL's als /en/services/ of /de/dienstleistungen/ die door Yoast SEO of WPML eerder zijn gegenereerd.
Voor sites met meer dan 1.000 redirects gebruiken we een hybride aanpak: middleware leest de mapping uit een statisch JSON-bestand bij koude start, cachet het in memory, en voert lookups uit in O(1). Code-schets:
// middleware.ts
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
import redirectsMap from "./data/redirects.json";
const REDIRECTS = new Map(Object.entries(redirectsMap));
export function middleware(request: NextRequest) {
const pathname = request.nextUrl.pathname;
const destination = REDIRECTS.get(pathname);
if (destination) {
return NextResponse.redirect(
new URL(destination, request.url),
301
);
}
return NextResponse.next();
}
export const config = {
matcher: ["/((?!_next/static|_next/image|favicon.ico).*)"],
};
De tweede beschermlaag is Cloudflare. Plaats Cloudflare voor uw Vercel- of zelf-gehoste Next.js-deployment en configureer de Bulk Redirects-feature (gratis tot 20 lists × 1.000 redirects op het Free Plan, ruim voldoende voor 95% van Nederlandse MKB-migraties). Het voordeel: Cloudflare redirects worden uitgevoerd op edge-niveau vóórdat de request uw Next.js-applicatie raakt. Als er ooit een bug in uw middleware sluipt of een deployment faalt, blijven de SEO-kritieke redirects via Cloudflare gewoon werken.
Test elke redirect na deployment met een tool als httpstatus.io of Screaming Frog in "List mode": importeer uw mapping-CSV, crawl alle oude URL's, en verifieer dat elke regel een 301-status retourneert met de juiste bestemming en zonder redirect chains (een redirect die naar een andere redirect leidt — Google volgt er maximaal 5 voordat het de URL als gebroken markeert).
4. Search Console Change of Address: de officiële kennisgeving aan Google
Veel Nederlandse bureaus slaan deze stap over omdat hij niet altijd verplicht is — en dat is precies waarom hun klanten verkeer verliezen. De Change of Address-tool in Google Search Console is alleen vereist wanneer het domein verandert (bijvoorbeeld van oudbedrijf.nl naar nieuwbedrijf.nl). Maar zelfs binnen hetzelfde domein versnelt een goed gestructureerde sitemap-resubmissie de herindexering van weken naar dagen.
Concrete stappen wanneer u wel het domein wisselt: zorg eerst dat zowel de oude als de nieuwe property zijn geverifieerd in Search Console (verificatie via DNS TXT-record bij uw Nederlandse registrar is het meest betrouwbaar; TransIP en Antagonist hebben beiden duidelijke knowledge base-artikelen voor het toevoegen van DNS-records). Vervolgens controleert Google of minimaal 80% van uw belangrijke URL's correcte 301-redirects retourneren. Pas wanneer die check slaagt, kunt u op "Send Request" klikken in Settings → Change of Address.
Voor migraties binnen hetzelfde domein (bijvoorbeeld een WordPress → Next.js refactor zonder domeinwissel) is de procedure als volgt: dien direct na go-live de nieuwe sitemap.xml in via Search Console. Next.js 15 genereert deze automatisch via app/sitemap.ts:
// app/sitemap.ts
import type { MetadataRoute } from "next";
import { getAllArticles } from "@/lib/articles";
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const articles = await getAllArticles();
const articleEntries = articles.map((a) => ({
url: `https://uwbedrijf.nl/nl/blog/${a.slug}`,
lastModified: a.updatedAt,
changeFrequency: "weekly" as const,
priority: 0.8,
}));
return [
{ url: "https://uwbedrijf.nl/nl", priority: 1.0 },
{ url: "https://uwbedrijf.nl/nl/diensten", priority: 0.9 },
...articleEntries,
];
}
Houd de oude sitemap nog 30 dagen actief en wijzend naar de oude URL's (die nu allemaal 301'en). Google gebruikt die oude sitemap om de redirects sneller te ontdekken. Verwijder hem pas wanneer Search Console rapporteert dat 95%+ van de oude URL's de status "Page with redirect" heeft.
Hreflang-tags vereisen extra aandacht bij Nederlandse meertalige sites. In Next.js plaatst u ze via de metadata-API in layout.tsx per locale:
export const metadata: Metadata = {
alternates: {
canonical: "https://uwbedrijf.nl/nl/diensten",
languages: {
"nl-NL": "https://uwbedrijf.nl/nl/diensten",
"en-US": "https://uwbedrijf.nl/en/services",
"de-DE": "https://uwbedrijf.nl/de/dienstleistungen",
"x-default": "https://uwbedrijf.nl/en/services",
},
},
};
5. Performance gains: Core Web Vitals als migratie-bonus
De grootste reden om van WordPress naar Next.js te gaan, naast onderhoudsgemak, is performance. Een gemiddelde WordPress-site bij een Nederlandse shared host (Vimexx, Antagonist's instaptarief) haalt een Lighthouse mobile score van 35-55, met een Largest Contentful Paint (LCP) van 3.8-5.2 seconden. Diezelfde site, herbouwd in Next.js 15 met React Server Components en gehost op Vercel of een Nederlandse VPS bij TransIP, haalt routinematig Lighthouse-scores van 92-100 met LCP onder de 1.2 seconde.
Die winst vertaalt zich direct naar SEO. Google bevestigde in late 2025 dat Interaction to Next Paint (INP) en LCP de zwaarste Core Web Vitals zijn voor de rankingfactor "Page Experience". Voor Nederlandse zoektermen met hoge competitie — denk aan "boekhoudprogramma MKB", "webwinkel laten maken", "SEO bureau Amsterdam" — kan een LCP-verbetering van 4 naar 1 seconde het verschil betekenen tussen positie 9 en positie 4 in de SERP.
Concreet drie performance-optimalisaties die elke Nederlandse Next.js-migratie standaard moet meenemen. Eén: gebruik next/image met automatische AVIF/WebP-conversie. Het component genereert responsive srcsets en lazy-loadt by default, wat voor image-heavy WordPress-sites (vooral webshops en bureaus met portfolio's) direct 1-2 seconden LCP-winst oplevert. Twee: schakel React Server Components in voor alle content die niet interactief hoeft te zijn. Bij Nederlandse blogartikelen en dienstenpagina's is dat 90%+ van de content — die wordt op de server gerenderd en als statische HTML naar de browser gestuurd, zonder JavaScript-overhead. Drie: gebruik Vercel's Edge Network of Cloudflare's cache voor de Nederlandse markt. Beide hebben PoP's in Amsterdam, wat de Time to First Byte voor Nederlandse bezoekers onder de 100ms brengt.
Voor klanten die hun migratie willen koppelen aan een complete SEO-audit, bouwt onze agency standaard een pre-/post-migration vergelijking in: we meten Core Web Vitals op de 20 belangrijkste pagina's vóór de go-live en herhalen die meting na 7, 14 en 30 dagen. Die data is gouden waarde wanneer u uw klant of management moet overtuigen van de ROI.
6. 30/60/90 dagen monitoring: het migratie-werk stopt niet op go-live
De meeste migraties falen niet tijdens de go-live, maar in de weken erna — wanneer het ontwikkelteam denkt klaar te zijn en de monitoring stopt. Onze ervaring met Nederlandse klanten leert dat een gestructureerde 30/60/90 dagen check-in het verschil maakt tussen verkeer dat binnen 6 weken volledig herstelt en verkeer dat permanent 30% lager blijft.
Dag 0 tot 7: dagelijkse checks op Search Console Coverage (zijn de nieuwe URL's geïndexeerd?), op de Crawl Stats (vindt Googlebot de redirects?), en op uw eigen analytics. Een verkeersdaling van 10-25% in de eerste week is normaal en geen reden tot paniek — Google moet de redirects ontdekken en de signalen overdragen. Daling boven 35% is wel een rode vlag; controleer dan onmiddellijk of er geen noindex tags per ongeluk live staan (een veelvoorkomende fout bij Next.js-deployments waar de staging-config naar productie is gepushed).
Dag 7 tot 30: wekelijkse Screaming Frog crawl van de oude URL-lijst om te valideren dat 100% van de 301's blijft werken. Maak een Looker Studio-dashboard met dagelijkse data uit Search Console (clicks, impressions, CTR, gemiddelde positie) per URL-cluster. Cluster bijvoorbeeld op categorie (/blog/, /diensten/, /over-ons/) en signaleer afwijkingen per cluster. Pak de top-20 verkeersverliezers aan: vaak gaat het om subtle issues zoals een veranderde H1, ontbrekende interne links, of een redirect die in een chain is beland na een latere wijziging.
Dag 30 tot 60: focus verschuift naar het opbouwen van interne links naar nieuwe URL-structuren. WordPress had vaak handmatig opgebouwde gerelateerde-posts-blokken; in Next.js bouwen we die vaak automatisch met een mapping-bestand. Controleer bovendien of uw structured data (JSON-LD voor Organization, BreadcrumbList, Article) correct meegemigreerd is — Schema-validators van Google en Schema.org zijn gratis en moeten 0 errors retourneren.
Dag 60 tot 90: tijd voor de eerste serieuze evaluatie. Vergelijk verkeer maand-op-maand met de drie maanden vóór migratie. Een succesvolle migratie laat in deze fase verkeer zien dat op of boven het oude niveau zit, met betere conversie (door de snellere pagina's). Indien verkeer 20%+ onder pre-migratie ligt, is een tweede audit nodig: vaak ontbreken backlinks die naar URL's wezen die in de cartografie zijn gemist, of zijn er hreflang-issues bij meertalige varianten.
Houd de redirects minimaal 12 maanden actief, idealiter permanent. Google's John Mueller bevestigde meermaals dat er geen "verlooptijd" is op 301-redirects voor het overdragen van SEO-equity, maar de meeste teams zien rankingverlies wanneer ze redirects na 6-9 maanden gaan verwijderen. De storage- en performance-impact van 1.000-5.000 redirects in Cloudflare of next.config.js is verwaarloosbaar; laat ze staan.
Wanneer schakelt u een specialist in?
Een Nederlandse MKB-site van 50-200 pagina's met een ervaren ontwikkelaar in huis kan deze migratie zelfstandig uitvoeren in 4-6 weken doorlooptijd. Voor sites met 500+ URL's, meertalige content, complexe WooCommerce-functionaliteit of een sterk SEO-profiel waarbij verkeer een directe omzetimpact heeft (e-commerce, lead-generation, SaaS), wordt het risico-loon-profiel snel ongunstig.
Onze ervaring na tientallen migraties in Nederland en België: een professionele migratie bespaart gemiddeld 3-6 maanden aan verkeer-herstel en voorkomt het type SEO-schade die zonder externe expertise vaak permanent blijft. Wanneer u twijfelt of uw situatie te complex is voor een interne aanpak, vraag dan een vrijblijvend offerte aan — we beoordelen uw URL-structuur, hostingomgeving en SEO-profiel binnen 48 uur en geven een realistische inschatting van migratietijd, kosten en de te verwachten Core Web Vitals winst.
WordPress is een fantastisch CMS geweest voor de Nederlandse markt in het afgelopen decennium. Maar in 2026, met steeds strengere Core Web Vitals-eisen en de mogelijkheid om met Next.js 15 native React Server Components, ingebouwde image-optimalisatie en edge-deployment te combineren, is migreren voor veel groeiende bedrijven niet langer een "nice to have" maar een commerciële noodzaak. Doe het goed, doe het één keer, en bescherm de SEO-investering die uw bedrijf in de afgelopen jaren heeft opgebouwd.

