WordPress migratie: je website veilig verhuizen naar een nieuwe host WordPress migration: safely moving your website to a new host
WordPress migratie website verhuizen is een veelbesproken onderwerp. In dit artikel
Een website verhuizen naar een andere hosting-provider lijkt simpel. totdat het misgaat. Kapotte links, ontbrekende afbeeldingen, of een site die helemaal niet meer werkt. Met de juiste aanpak kun je zonder downtime en zonder dataverlies verhuizen.
1. Voorbereiding
Maak een volledige backup
Backup van alles: database, wp-content, wp-config.php, .htaccess. Bewaar deze apart van zowel de oude als nieuwe server.
Lees ook: WordPress backups: bescherm je website tegen dataverlies
Noteer je huidige configuratie
PHP-versie, MySQL-versie, geïnstalleerde PHP-extensies, cron-jobs, e-mailconfiguratie. De nieuwe server moet dezelfde (of nieuwere) versies ondersteunen.
Verlaag DNS TTL
Zet je DNS TTL (Time To Live) 24-48 uur vóór de migratie naar 300 seconden (5 minuten). Zo schakelen bezoekers snel over naar de nieuwe server als je de DNS wijzigt.
Hulp nodig? Bekijk onze website hulp amsterdam pagina.
Belangrijk
Plan je migratie op een rustig moment. Niet op vrijdagmiddag, niet vlak voor een lancering. Geef jezelf ruim de tijd om problemen op te lossen als er iets misgaat.
2. Bestanden kopiëren
# Kopieer alles van oude naar nieuwe server
rsync -avz -e ssh /pad/naar/wordpress/ user@nieuwe-server:/pad/naar/wordpress/
# Of download eerst lokaal en upload dan
scp -r user@oude-server:/pad/naar/wordpress/ ./lokale-backup/
scp -r ./lokale-backup/ user@nieuwe-server:/pad/naar/wordpress/
Alternatief: gebruik een migratietool als All-in-One WP Migration (plugin) of Duplicator voor een grafische aanpak. Let op dat deze plugins een upload-limiet hebben. bij grote sites (>512MB) heb je de pro-versie of een handmatige aanpak nodig.
3. Database migreren
# Op de oude server: exporteren
mysqldump -u db_user -p db_name > database-export.sql
# Op de nieuwe server: database aanmaken en importeren
mysql -u nieuwe_user -p -e "CREATE DATABASE nieuwe_db;"
mysql -u nieuwe_user -p nieuwe_db < database-export.sql
URL’s aanpassen (search-replace)
Verhuist je site naar een ander domein of van HTTP naar HTTPS? Dan moeten alle URL’s in de database worden aangepast. Gebruik nooit een simpele SQL REPLACE. WordPress slaat geserialiseerde data op die daardoor corrupt raakt.
# Droog draaien (preview, wijzigt niets)
wp search-replace 'https://oud-domein.nl' 'https://nieuw-domein.nl' --dry-run
# Uitvoeren
wp search-replace 'https://oud-domein.nl' 'https://nieuw-domein.nl' --all-tables
# HTTP naar HTTPS
wp search-replace 'http://jouwdomein.nl' 'https://jouwdomein.nl' --all-tables
Nooit doen
Voer geen UPDATE wp_options SET option_value = REPLACE(...); uit op geserialiseerde data. De string-lengtes kloppen dan niet meer en WordPress crasht. Gebruik altijd WP-CLI of het Search Replace DB script.
4. Configuratie aanpassen
// Database gegevens bijwerken
define('DB_NAME', 'nieuwe_db');
define('DB_USER', 'nieuwe_user');
define('DB_PASSWORD', 'nieuw_wachtwoord');
define('DB_HOST', 'localhost'); // of IP van database-server
// Force correcte URL (tijdelijk, verwijder na DNS-switch)
define('WP_HOME', 'https://jouwdomein.nl');
define('WP_SITEURL', 'https://jouwdomein.nl');
5. Testen vóór DNS-switch
Test de site op de nieuwe server voordat je DNS wijzigt. Zo kun je problemen oplossen zonder dat bezoekers er last van hebben.
# Voeg toe aan /etc/hosts (Mac/Linux) of C:WindowsSystem32driversetchosts (Windows)
123.456.789.10 jouwdomein.nl www.jouwdomein.nl
# Nu opent jouwdomein.nl vanuit JOUW browser de nieuwe server
# De rest van de wereld ziet nog de oude server
Controleer in elk geval:
- Homepage laadt correct
- Afbeeldingen worden getoond
- Interne links werken
- Formulieren versturen succesvol
- SSL-certificaat is actief
- WordPress admin is bereikbaar
6. DNS overzetten
Alles werkt op de nieuwe server? Tijd voor de DNS-switch:
Wijzig het A-record
Ga naar je domeinregistrar (TransIP, Versio, etc.) en wijzig het A-record van je domein naar het IP-adres van de nieuwe server.
Wacht op propagatie
DNS-wijzigingen kunnen tot 48 uur duren om wereldwijd door te voeren. In de praktijk, met een lage TTL, is het vaak binnen 15-60 minuten klaar. Check via dnschecker.org.
Houd de oude server online
Laat de oude server nog 48-72 uur draaien. Sommige bezoekers worden nog naar het oude IP gestuurd totdat hun DNS-cache verloopt.
Checklist na migratie
- SSL-certificaat actief en werkend op nieuwe server
- Alle pagina’s laden correct (steekproef)
- Contactformulieren werken en e-mails komen aan
- Permanente redirects (301) werken als URL-structuur is gewijzigd
- Google Search Console bijgewerkt (indien domein gewijzigd)
- Backup-schema actief op nieuwe server
- Cron-jobs ingesteld op nieuwe server
- E-mail correct geconfigureerd (MX-records, SPF, DKIM)
- Verwijder WP_HOME en WP_SITEURL hardcodes uit wp-config.php
- Oude server pas opzeggen als alles stabiel draait (min. 1 week)
Belangrijkste takeaway
De sleutel tot een succesvolle migratie is voorbereiding en testen. Verlaag je DNS TTL vooraf, test de site via het hosts-bestand vóór de DNS-switch, en houd de oude server als vangnet. Gebruik WP-CLI voor URL-aanpassingen, nooit handmatige SQL-queries op geserialiseerde data.
Gerelateerde artikelen
In this article
Moving a website to a different hosting provider seems simple, until something goes wrong. Broken links, missing images, or a site that stops working entirely. With the right approach you can migrate without downtime and without data loss.
1. Preparation
Make a complete backup
Back up everything: database, wp-content, wp-config.php, .htaccess. Store this separately from both the old and new server.
Note your current configuration
PHP version, MySQL version, installed PHP extensions, cron jobs, email configuration. The new server must support the same (or newer) versions.
Lower DNS TTL
Set your DNS TTL (Time To Live) to 300 seconds (5 minutes) 24-48 hours before the migration. This way visitors switch to the new server quickly when you change the DNS.
Important
Plan your migration at a quiet moment. Not on Friday afternoon, not right before a launch. Give yourself plenty of time to solve problems if something goes wrong.
2. Copying files
# Copy everything from old to new server
rsync -avz -e ssh /path/to/wordpress/ user@new-server:/path/to/wordpress/
# Or download locally first, then upload
scp -r user@old-server:/path/to/wordpress/ ./local-backup/
scp -r ./local-backup/ user@new-server:/path/to/wordpress/
Alternative: use a migration tool like All-in-One WP Migration (plugin) or Duplicator for a visual approach. Note that these plugins have upload limits: for large sites (>512MB) you need the pro version or a manual approach.
3. Migrating the database
# On the old server: export
mysqldump -u db_user -p db_name > database-export.sql
# On the new server: create database and import
mysql -u new_user -p -e "CREATE DATABASE new_db;"
mysql -u new_user -p new_db < database-export.sql
Updating URLs (search-replace)
Moving your site to a different domain or from HTTP to HTTPS? Then all URLs in the database need to be updated. Never use a simple SQL REPLACE: WordPress stores serialized data that would become corrupt.
# Dry run (preview, changes nothing)
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --dry-run
# Execute
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --all-tables
# HTTP to HTTPS
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables
Never do this
Don't run UPDATE wp_options SET option_value = REPLACE(...); on serialized data. The string lengths won't match and WordPress will crash. Always use WP-CLI or the Search Replace DB script.
4. Adjusting configuration
// Update database credentials
define('DB_NAME', 'new_db');
define('DB_USER', 'new_user');
define('DB_PASSWORD', 'new_password');
define('DB_HOST', 'localhost'); // or database server IP
// Force correct URL (temporary, remove after DNS switch)
define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');
5. Testing before DNS switch
Test the site on the new server before changing DNS. This way you can fix problems without visitors being affected.
# Add to /etc/hosts (Mac/Linux) or C:WindowsSystem32driversetchosts (Windows)
123.456.789.10 yourdomain.com www.yourdomain.com
# Now yourdomain.com opens from YOUR browser on the new server
# The rest of the world still sees the old server
Check at minimum:
- Homepage loads correctly
- Images are displayed
- Internal links work
- Forms submit successfully
- SSL certificate is active
- WordPress admin is accessible
6. Switching DNS
Everything works on the new server? Time for the DNS switch:
Change the A record
Go to your domain registrar and change the A record of your domain to the IP address of the new server.
Wait for propagation
DNS changes can take up to 48 hours to propagate worldwide. In practice, with a low TTL, it's often done within 15-60 minutes. Check via dnschecker.org.
Keep the old server online
Leave the old server running for another 48-72 hours. Some visitors will still be directed to the old IP until their DNS cache expires.
Post-migration checklist
- SSL certificate active and working on new server
- All pages load correctly (spot check)
- Contact forms work and emails are delivered
- Permanent redirects (301) work if URL structure changed
- Google Search Console updated (if domain changed)
- Backup schedule active on new server
- Cron jobs set up on new server
- Email correctly configured (MX records, SPF, DKIM)
- Remove WP_HOME and WP_SITEURL hardcodes from wp-config.php
- Only cancel old server after everything runs stable (minimum 1 week)
Key takeaway
The key to a successful migration is preparation and testing. Lower your DNS TTL in advance, test the site via the hosts file before the DNS switch, and keep the old server as a safety net. Use WP-CLI for URL changes, never manual SQL queries on serialized data.