Migreer van WordPress naar op maat gemaakte PHP zonder SEO te verliezen – De complete 7-stappen gids
Overstappen van WordPress naar een op maat gemaakte PHP-codebasis kan de TTFB met 70% verminderen, plugin-kwetsbaarheden elimineren en u 100% eigendom geven. Maar als u omleidingen en metadata verkeerd afhandelt, zal uw ranking kelderen. Ik heb meer dan 30 WordPress-sites gemigreerd – hier is het exacte proces dat SEO behoudt (en vaak verbetert).
Waarom migreren van WordPress naar op maat gemaakte PHP?
- Traag presteren – Zelfs met caching laadt WordPress meer dan 847KB aan JavaScript.
- Plugin-kwetsbaarheden – 96% van de gehackte WordPress-sites komt door verouderde plugins.
- Maandelijkse kosten – Premium plugins, voor WP geoptimaliseerde hosting en onderhoud lopen op.
- Vendor lock-in – U bent geen eigenaar van de code; u bent eigenaar van een database met berichten en een thema.
Op maat gemaakte PHP geeft u volledige controle, sub-seconde laadtijden en geen maandelijkse platformkosten. Maar de migratie moet feilloos zijn.
Voordat u begint: De pre‑migratie audit
- Alle URL’s exporteren – Gebruik Screaming Frog (gratis tot 500 URL’s) of
wget:wget --spider --force-html -r -l 3 https://uwwebsite.com 2>&1 | grep '^--' | awk '{ print $3 }' > urls.txt - Rankings vastleggen – Exporteer de top 100 trefwoorden uit Google Search Console (prestatierapport).
- Metadata opslaan – Screaming Frog kan titeltags, metabeschrijvingen en H1’s als CSV exporteren.
- Backlinks documenteren – Gebruik Search Console → Links → Externe links, of Ahrefs/SEMrush indien beschikbaar.
Stap 1: Crawl uw oude site (Screaming Frog diepgaand)
Download Screaming Frog SEO Spider (gratis tot 500 URL’s). Configureer het om te extraheren:
- Alle interne URL’s.
- Titeltags en metabeschrijvingen.
- Canonieke tags.
- H1-kopteksten.
- Responscodes (200, 301, 404).
Exporteer als CSV. Dit bestand wordt uw migratiekaart. U gebruikt het om te verifiëren dat elke bestaande pagina een bestemming heeft.
Stap 2: URL’s toewijzen aan nieuwe structuur – Houd ze indien mogelijk identiek
De veiligste aanpak: precies dezelfde URL-paden behouden. Als uw WordPress-URL’s schoon zijn (bijv. /diensten/webdesign), kunt u ze hergebruiken. Wijzig de structuur alleen als:
- Uw WordPress-URL’s
/2023/01/berichtnaam/(data) bevatten – verwijder de data. - U dubbele inhoud heeft van
/categorie/en/tag/archieven – verwijder die.
Voorbeeldtoewijzing voor een blog:
/2023/01/waarom-op-maat-php → /blog/waarom-op-maat-php
/categorie/prestatie → /blog/categorie/prestatie (optioneel, u kunt categorielabels verwijderen)
/tag/seo → (verwijder – tagpagina’s verdunnen vaak autoriteit)
Maak een CSV met twee kolommen: old_url, new_url. Voor pagina’s die u niet opnieuw aanmaakt (bijv. tagarchieven), leidt u om naar de dichtstbijzijnde relevante pagina.
Stap 3: Inhoud exporteren uit WordPress
Methode A – WP REST API (gemakkelijkst voor kleine sites)
<code><?php<br>$posts = json_decode(file_get_contents('https://uwwebsite.com/wp-json/wp/v2/posts?per_page=100&page=1'));<br>foreach ($posts as $post) {<br> $data = [<br> 'title' => $post->title->rendered,<br> 'slug' => $post->slug,<br> 'content' => $post->content->rendered,<br> 'excerpt' => $post->excerpt->rendered,<br> 'date' => $post->date,<br> 'meta' => [<br> 'title' => get_post_meta($post->id, '_yoast_wpseo_title', true),<br> 'description' => get_post_meta($post->id, '_yoast_wpseo_metadesc', true)<br> ]<br> ];<br> // Invoegen in aangepaste MySQL-tabel<br>}<br>?></code>
Methode B – WP CLI (snelst voor grote sites)
<code>wp export --dir=/tmp --post_type=post,page --with_attachments</code>
Methode C – Directe MySQL (voor volledige controle)
<code>SELECT ID, post_title, post_name, post_content, post_date FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page');</code>
Haal vervolgens Yoast SEO-metadata op uit wp_postmeta waar meta_key IN ('_yoast_wpseo_title','_yoast_wpseo_metadesc').
Stap 4: Bouw uw op maat gemaakte PHP-site met dezelfde metadata
- De exact dezelfde
<title>-tag (van Yoast of All in One SEO). - Dezelfde
<meta name="description">. - Dezelfde
<h1>(hoewel een kleine wijziging meestal oké is).
Sla metadata op in uw database (bijv. een page_meta-tabel) of een PHP-array. Voor dynamische sites kunt u de WordPress-database zelfs als alleen-lezen bron behouden tijdens de overgang – maar dat voegt complexiteit toe.
Stap 5: Implementeer 301-omleidingen (De meest kritieke stap)
Een 301-omleiding vertelt Google: “Deze pagina is permanent verplaatst.” Google draagt bijna 100% van de rankingkracht van de oude pagina over naar de nieuwe URL.
Voor Apache (.htaccess) – Best voor minder dan 200 omleidingen
<code>Redirect 301 /oude-url /nieuwe-url<br>Redirect 301 /2023/01/waarom-op-maat-php /blog/waarom-op-maat-php</code>
Voor duizenden omleidingen – Gebruik een PHP-kaart (voorkomt dat .htaccess opgeblazen raakt)
<code><?php<br>$redirects = json_decode(file_get_contents(__DIR__ . '/redirects.json'), true);<br>$request = $_SERVER['REQUEST_URI'];<br>if (isset($redirects[$request])) {<br> header('HTTP/1.1 301 Moved Permanently');<br> header('Location: ' . $redirects[$request]);<br> exit;<br>}<br>?></code>
Voor Nginx – Gebruik de map-richtlijn
<code>map $request_uri $new_uri {<br> /oude-url /nieuwe-url;<br> /2023/01/waarom-op-maat-php /blog/waarom-op-maat-php;<br>}<br>server {<br> if ($new_uri) {<br> return 301 $new_uri;<br> }<br>}</code>
Pro-tip: Gebruik nooit ketens van omleidingen (A → B → C). Elke stap verliest een klein beetje linkwaarde. Leid altijd direct om van A → C.
Stap 6: Genereer een dynamische XML-sitemap
Gebruik geen statische sitemap – die wordt verouderd. Maak in plaats daarvan sitemap.php die dynamisch XML uitvoert:
<code><?php<br>header('Content-Type: application/xml');<br>echo '<?xml version="1.0" encoding="UTF-8"?>';<br>echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';<br>$pages = getAllPageUrlsFromDatabase(); // uw aangepaste functie<br>foreach ($pages as $url) {<br> echo '<url><loc>' . htmlspecialchars($url) . '</loc><lastmod>' . date('Y-m-d') . '</lastmod></url>';<br>}<br>echo '</urlset>';<br>?></code>
Voeg dan een herschrijfregel toe in .htaccess:
<code>RewriteRule ^sitemap\.xml$ sitemap.php [L]</code>
Dien de sitemap onmiddellijk na de lancering in bij Google Search Console.
Stap 7: Lanceer en monitor gedurende 30 dagen
- Controleer alle omleidingen – Gebruik een crawler (Screaming Frog) om elke oude URL te bezoeken en te verifiëren dat deze een 301 retourneert naar de nieuwe URL.
- Monitor dagelijks het “Dekking”-rapport van Google Search Console – Zoek naar 404-fouten. Voeg voor elke 404 een ontbrekende omleiding toe of herstel de verbroken link.
- Dien de nieuwe sitemap in – Ga in Search Console naar Sitemaps → Nieuwe sitemap toevoegen (
sitemap.xml). - Houd Core Web Vitals in de gaten – Binnen een week zou u verbetering moeten zien. Zo niet, debug dan afbeeldingen, CSS of serverconfiguratie.
- Vergelijk rankings na 4 weken – Exporteer opnieuw GSC-gegevens. De meeste klanten zien geen verandering of een lichte verbetering door snellere laadtijden.
Veelvoorkomende valkuilen en hoe ze te vermijden
Valkuil 1: URL’s wijzigen zonder omleidingen
Symptoom: 404-fouten in Search Console.
Oplossing: Implementeer de PHP-omleidingskaart voordat u live gaat.
Valkuil 2: Vergeten metabeschrijvingen te migreren
Symptoom: Google herschrijft uw snippet met willekeurige tekst.
Oplossing: Gebruik dezelfde metadata-export van Stap 1.
Valkuil 3: Afbeeldingen (mediabestanden) verliezen
Symptoom: Kapotte afbeeldingen op de op maat gemaakte site.
Oplossing: Kopieer de hele map /wp-content/uploads/ naar de openbare map van uw nieuwe site. Zet een omleiding op van /wp-content/uploads/... naar /uploads/... als u de map hebt verplaatst.
Valkuil 4: Waarschuwingen voor gemengde inhoud (HTTP-afbeeldingen)
Symptoom: Browser toont “onveilige inhoud” op HTTPS.
Oplossing: Zoek en vervang oude afbeeldings-URL’s in uw database van http://oudewebsite.com naar https://nieuwewebsite.com.
Praktijkcase: Migratie van een zakelijke site met 500 pagina’s
Een nationaal franchisenetwerk had een WordPress-site met meer dan 500 locatiepagina’s, elk met unieke inhoud. De laadtijd was 2,8 seconden (mobiel) en ze betaalden $300 per maand voor hosting en plugins.
Proces:
- Alle locatiegegevens geëxporteerd met WP CLI.
- Een op maat gemaakte PHP-site herbouwd met een enkel PHP-template dat locatiegegevens uit MySQL haalde.
- De URL-structuur identiek gehouden (
/locaties/stad-staat/). - Een PHP-kaart gebruikt voor 301-omleidingen (hoewel de URL’s niet veranderden, hielden ze de kaart voor de veiligheid).
Resultaten na 60 dagen:
- TTFB: 800ms → 180ms.
- Lighthouse-prestatie: 58 → 96.
- Hostingkosten: $300/maand → $30/maand (standaard VPS).
- Rankings: Verbeterd voor 87% van de locatiepagina’s (vanwege snelheid).
- Organisch verkeer: +23% binnen 3 maanden.
De klant is nu volledig eigenaar van de code, betaalt geen plugin-kosten en kan eenvoudig nieuwe locaties toevoegen via een simpele CSV-upload.
Moet u migreren? Een beslissingskader
Migreer naar op maat gemaakte PHP als:
- Uw site grotendeels statisch is of voorspelbare inhoud heeft (blog + diensten).
- U genoeg heeft van plugin-onderhoud en beveiligingsupdates.
- U 100% code-eigendom en geen maandelijkse platformkosten wilt.
Blijf op WordPress als:
- U geavanceerde e-commerce nodig hebt (hoewel op maat gemaakte PHP dit aankan).
- U sterk afhankelijk bent van WooCommerce-extensies.
- Uw team niet technisch is en gewend is aan de WP-beheeromgeving.
Klaar om de overstap te maken?
Ik heb meer dan 30 WordPress-sites gemigreerd naar op maat gemaakte PHP – van kleine blogs tot e-commerce winkels met 2.000 pagina’s. Ik regel alles: contentexport, URL-toewijzing, 301-omleidingen, behoud van metadata en monitoring na de lancering.
Uw op maat gemaakte PHP-site laadt in minder dan 0,8 seconden, scoort 100 op Lighthouse en u betaalt nooit meer plugin-kosten.
Alle gegevens zijn afkomstig van echte klantmigraties uitgevoerd door BuiltToWinWeb. Individuele resultaten kunnen variëren op basis van de complexiteit en inhoud van de site.