WordPress-website stuurt door naar een andere site: de doorverwijzing vinden

Uw bezoekers komen terecht op een loterijpagina, een pillenwinkel of een nep-helpdesk, terwijl u uw site gewoon ziet. Dat is het kenmerk van een geïnjecteerde doorverwijzing, meestal een voorwaardelijke. Deze gids legt uit hoe u haar nabootst, haar vindt in de bestanden of de database, en de toegang sluit waarlangs ze is geplaatst.

Gepubliceerd op 21 september 2026 Leestijd: 10 minuten

Alle gidsen

In het kort

  1. Roep de doorverwijzing op zoals een bezoeker: privévenster, telefoon op mobiele data, binnenkomen via een zoekresultaat.
  2. Maak een volledige kopie van de site zoals hij is, bestanden en database, voordat u iets wijzigt.
  3. Wijzig de wachtwoorden van de hosting, de FTP, de database en de WordPress-beheerders, en vervang daarna de beveiligingssleutels in wp-config.php.
  4. Zoek de doorverwijzing op vier plaatsen: .htaccess, de PHP-bestanden, de database en de adresinstellingen van de site.
  5. Verwijder ook de toegang waarlangs ze is geplaatst: onbekende beheerdersaccounts, PHP-bestanden in wp-content/uploads, plugins om opnieuw te installeren of te verwijderen.
  6. Open het rapport Beveiligingsproblemen in Google Search Console en vraag een beoordeling aan als de site erin staat.

Waarom u de doorverwijzing zelf niet ziet

Een doorverwijzing die bij een hack is geplaatst, kiest voor wie ze geldt. Meestal spaart ze de persoon die de site beheert, zodat ze zo lang mogelijk blijft zitten. De meest voorkomende voorwaarden:

Een klant die schrijft “uw site stuurt me ergens anders heen”, neemt u dus serieus, ook als bij u alles correct wordt weergegeven.

De doorverwijzing nabootsen

Verplaats u in de bezoeker die ermee te maken krijgt:

  1. Open een privévenster, zoek de naam van uw bedrijf in een zoekmachine en klik op uw eigen resultaat.
  2. Doe hetzelfde vanaf een telefoon, op mobiele data in plaats van wifi.
  3. Noteer het bestemmingsadres, het tijdstip en het apparaat: deze drie gegevens dienen uw hostingprovider en later de aanvraag voor een beoordeling bij Google.

Hebt u toegang tot een terminal, dan vraagt deze opdracht uw homepage op en doet zich daarbij voor als een iPhone die van Google komt:

Terminal (typ onder Windows curl.exe in plaats van curl)
curl -s -i -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" -e "https://www.google.com/" https://www.uw-site.com/

Lees de eerste regels van het antwoord. Een code 301 of 302 gevolgd door een regel Location: naar een onbekend adres wijst op een doorverwijzing door de server: die zit in .htaccess of in een PHP-bestand. Een code 200 terwijl de browser wel wordt doorgestuurd, wijst op een doorverwijzing in de pagina, in JavaScript: die zit meestal in de database of in een bestand van het thema.

Voordat u de site aanraakt: drie stappen

  1. Een volledige kopie, zoals hij is. Bestanden en database, gedateerd, buiten de server bewaard. Ze dient als bewijs, als vergelijkingspunt, en als vangnet als het opschonen iets nuttigs weghaalt.
  2. De wachtwoorden, vanaf een schoon apparaat. Klantenaccount bij de hostingprovider, FTP- of SFTP-accounts, databasegebruiker (zet het nieuwe wachtwoord in wp-config.php, constante DB_PASSWORD), en daarna elk WordPress-beheerdersaccount.
  3. De beveiligingssleutels. Vervang de acht regels van AUTH_KEY tot NONCE_SALT in wp-config.php door een nieuwe set, gegenereerd op https://api.wordpress.org/secret-key/1.1/salt/. Alle open sessies worden afgesloten, ook die van de indringer.
Met WP-CLI is de derde stap één opdracht
wp config shuffle-salts

Waar de doorverwijzing zich verbergt

1. Het bestand .htaccess

In de root van de site, en soms in een submap, kan .htaccess herschrijfregels bevatten die de indringer heeft toegevoegd. Het blok dat WordPress zelf schrijft, is kort en staat tussen # BEGIN WordPress en # END WordPress:

Het blok dat WordPress in het Nederlands schrijft voor een site die in de root van het domein is geïnstalleerd
# BEGIN WordPress
# De richtlijnen (regels) tussen "BEGIN WordPress" en "END WordPress" worden
# dynamisch gegenereerd en zouden alleen aangepast mogen worden via WordPress filters.
# Alle wijzigingen aan de richtlijnen tussen deze markeringen worden overschreven.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Een regel RewriteCond die %{HTTP_REFERER} (google, bing, facebook) of %{HTTP_USER_AGENT} (android, iphone, mobile) test, gevolgd door een RewriteRule naar een extern adres, is de doorverwijzing. Cache- en beveiligingsplugins schrijven ook eigen blokken, gemarkeerd met hun naam: leg elk blok naast de lijst van uw plugins voordat u het verwijdert.

2. De PHP-bestanden

WP-CLI vergelijkt de bestanden van de WordPress-kern en van de plugins met de controlesommen die WordPress.org publiceert, en toont elk gewijzigd of toegevoegd bestand:

Terminal, in de root van de site
wp core verify-checksums
wp plugin verify-checksums --all

De tweede opdracht dekt de plugins die via de repository van WordPress.org worden verspreid. Een plugin die u bij de maker hebt gekocht, vergelijkt u met een verse kopie uit uw account bij die maker. Dat komt vaak voor: van de 540 WordPress-websites van mkb-bedrijven in onze meting van 1 september 2026 draagt 66 % minstens één plugin die niet in de publieke repository staat.

Zonder WP-CLI geven twee zoekopdrachten een eerste selectie:

Terminal, in de root van de site
find . -name "*.php" -mtime -30
find wp-content/uploads -name "*.php"

De eerste toont de PHP-bestanden die de afgelopen 30 dagen zijn gewijzigd, de tweede de PHP-bestanden in de mediamap, waar ze standaard verdacht zijn (sommige plugins zetten er een lege index.php, en die is legitiem). Een wijzigingsdatum is te vervalsen: een oud bestand op de verkeerde plek blijft het bekijken waard.

Open eerst wp-config.php, de index.php in de root, de functions.php en de header.php van het actieve thema, en de map wp-content/mu-plugins: de plugins daarin worden automatisch geladen en zijn niet vanuit het dashboard uit te schakelen. De signalen om naar te zoeken: eval(, base64_decode(, gzinflate(, str_rot13(, lange onleesbare tekenreeksen, of window.location gevolgd door een adres dat u niet kent.

3. De database

Een doorverwijzing in JavaScript nestelt zich graag in de inhoud van pagina’s of in de instellingen, waar geen enkel bestand haar laat zien. WP-CLI zoekt een tekenreeks in alle tabellen van WordPress:

Terminal
wp db search "<script"
wp db search "fromCharCode"

Zonder WP-CLI voert u dezelfde zoekopdrachten uit in phpMyAdmin, tabblad SQL:

SQL (vervang wp_ door het voorvoegsel uit wp-config.php, variabele $table_prefix)
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%';
SELECT option_name FROM wp_options WHERE option_value LIKE '%<script%';

Sommige resultaten zijn legitiem: een tool voor bezoekersstatistieken, een cookiebanner of een widget die u zelf hebt geplaatst. Wat met niets overeenkomt dat u hebt geïnstalleerd, verdient een nadere blik, vooral een script dat een adres opbouwt uit tekencodes.

4. De adresinstellingen en de accounts

Onder Instellingen > Algemeen moeten “WordPress adres (URL)” en “Site adres (URL)” uw eigen domein tonen. Dezelfde waarden kunnen in wp-config.php worden afgedwongen met de constanten WP_HOME en WP_SITEURL: controleer beide plaatsen.

Terminal
wp option get home
wp option get siteurl
wp user list --role=administrator

Zijn de constanten gedefinieerd, dan geven de eerste twee opdrachten hun waarde terug. De laatste toont de beheerders met hun registratiedatum; in het dashboard vindt u dezelfde lijst in het menu Gebruikers, gefilterd op de rol Beheerder. Een account dat niemand herkent, verwijdert u, waarbij u de inhoud ervan aan een legitiem account toewijst.

De doorverwijzing verwijderen, en daarna de toegang

De regel die doorstuurt verwijderen, stopt het symptoom. De toegang die de indringer gebruikte, blijft open zolang ze niet is gevonden, en de doorverwijzing komt binnen enkele dagen terug. De volgorde die standhoudt:

  1. Vervang de kernbestanden door een verse kopie: verwijder de mappen wp-admin en wp-includes en voer daarna wp core download --skip-content --force uit, dat de kern opnieuw schrijft zonder uw plugins, thema’s en media aan te raken. De opdracht overschrijft bestaande bestanden maar verwijdert geen toegevoegde bestanden: daarom gaan de twee mappen eerst weg, en daarom verwijdert u onbekende PHP-bestanden in de root met de hand.
  2. Installeer het thema en elke plugin opnieuw vanuit hun officiële bron, en verwijder wat de site niet meer gebruikt, ook wat gedeactiveerd is: die bestanden staan nog op de server.
  3. Verwijder vreemde PHP-bestanden uit wp-content/uploads, de regels die aan .htaccess zijn toegevoegd en de scripts die in de database zijn gevonden.
  4. Controleer de geplande taken met wp cron event list: een taak met een onbekende naam kan de code terugzetten.
  5. Werk WordPress, het thema en de plugins bij.
  6. Herhaal de tests van het begin, vanaf meerdere apparaten en gedurende meerdere dagen.

Bewaart de site persoonsgegevens (formulieren, klantaccounts, bestellingen), noteer dan het tijdstip waarop u de hack hebt vastgesteld. In de Europese Unie schrijft de AVG voor dat een inbreuk in verband met persoonsgegevens uiterlijk 72 uur nadat u er kennis van hebt genomen aan de toezichthoudende autoriteit wordt gemeld, tenzij het niet waarschijnlijk is dat de inbreuk een risico inhoudt voor de rechten en vrijheden van natuurlijke personen.

Google, en wat uw bezoekers zien

Zodra Google de doorverwijzing opmerkt, kan Chrome een rode pagina “Gevaarlijke site” tonen voordat de site opent, en kan Google onder uw resultaat “Deze site is mogelijk gehackt” zetten. Het rapport Beveiligingsproblemen in Google Search Console laat zien wat is gevonden en op welke adressen. Is de site opgeschoond, dan start de knop Beoordeling aanvragen de controle.

Uw site overgenomen en draaiend gehouden, na de doorverwijzing

Een verwijderde doorverwijzing laat één vraag over: wie zorgt er daarna voor de site? Simafri neemt uw WordPress-website over, zet hem weer online op een basis die wij hosten, beveiligen en bijhouden, en zorgt er daarna voor, maand na maand. U houdt uw domeinnaam en uw inhoud.

Mijn site laten overnemen

Veelgestelde vragen

Waarom stuurt mijn WordPress-website alleen op mobiel door?

De geïnjecteerde code leest de User-Agent van de browser en stuurt alleen telefoons door. Wie de site beheert, vaak op een computer, ziet niets. Test vanaf een telefoon op mobiele data, of met curl en de identificatie van een mobiele browser.

Verwijdert een nieuwe installatie van WordPress de doorverwijzing?

Een nieuwe installatie van de kern herschrijft de bestanden van WordPress, zonder de bestanden te verwijderen die een indringer heeft toegevoegd. De database, het thema, de plugins en de mediamap blijven zoals ze zijn, en daar zitten de doorverwijzing en de toegang van de indringer meestal. Een verse kern is één stap van het opschonen, aan te vullen met de database, de plugins, de accounts en de wachtwoorden.

De site is opgeschoond, waarom komt de doorverwijzing terug?

Omdat de toegang die is gebruikt om haar te plaatsen er nog is: een toegevoegd beheerdersaccount, een PHP-bestand verstopt tussen de media, een geplande taak, een kwetsbare plugin. Elk daarvan maakt het mogelijk de code na het opschonen terug te zetten. Controleer de accounts, de map wp-content/uploads, de geplande taken en de versies van de plugins, en wijzig daarna opnieuw de wachtwoorden.

Hoe weet ik of Google de doorverwijzing heeft opgemerkt?

Open Google Search Console en daarin het rapport Beveiligingsproblemen: het toont de gevonden problemen en voorbeeld-URL’s. Is de site nog niet geverifieerd in Search Console, dan dekt verificatie via een DNS-record het hele domein.

Neem contact op