Migrate WordPress to Custom PHP Without Losing SEO – BuiltToWinWeb
EN ES FR DE IT PT ZH JA KO RU NL
← Back to all articles
?>

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:

  1. Alle interne URL’s.
  2. Titeltags en metabeschrijvingen.
  3. Canonieke tags.
  4. H1-kopteksten.
  5. 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>&lt;?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>?&gt;</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>&lt;?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>?&gt;</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>&lt;?php<br>header('Content-Type: application/xml');<br>echo '&lt;?xml version="1.0" encoding="UTF-8"?&gt;';<br>echo '&lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"&gt;';<br>$pages = getAllPageUrlsFromDatabase(); // uw aangepaste functie<br>foreach ($pages as $url) {<br>    echo '&lt;url&gt;&lt;loc&gt;' . htmlspecialchars($url) . '&lt;/loc&gt;&lt;lastmod&gt;' . date('Y-m-d') . '&lt;/lastmod&gt;&lt;/url&gt;';<br>}<br>echo '&lt;/urlset&gt;';<br>?&gt;</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

  1. 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.
  2. 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.
  3. Dien de nieuwe sitemap in – Ga in Search Console naar Sitemaps → Nieuwe sitemap toevoegen (sitemap.xml).
  4. Houd Core Web Vitals in de gaten – Binnen een week zou u verbetering moeten zien. Zo niet, debug dan afbeeldingen, CSS of serverconfiguratie.
  5. 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.

Laat mij uw WordPress-site migreren →

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.