← Terug naar kennisbank HOSTING

301 Moved Permanently — uitgelegd en gebruikt

De HTTP-status die zegt: "deze URL is permanent verhuisd, ga voortaan naar de nieuwe locatie". Browsers cachen het, zoekmachines geven link-equity door, en de oude URL valt uit zoekresultaten ten gunste van de nieuwe. Voor migraties, URL-restructuring en het consolideren van duplicaat-content is 301 de standaard. Maar één verkeerde keuze (302 i.p.v. 301) en je verliest SEO-positie. Deze gids legt uit wanneer je 'm gebruikt, hoe je 'm goed instelt, en welke val-kuilen ik regelmatig zie.

Wat een 301 doet (en waarom 302 anders is)

Wanneer een server een 301 terugstuurt, vertelt 'ie de browser:

  1. De URL die je opvroeg is permanent verhuisd
  2. De nieuwe locatie staat in de Location-header
  3. Update je bookmarks/cache: voortaan ga je naar de nieuwe URL

Een 302 zegt iets anders: "de URL is tijdelijk ergens anders, maar over een week kan dit weer terug zijn". Browsers cachen 302's niet en zoekmachines blijven de oude URL als de canonieke beschouwen.

Voor permanente verhuizingen wil je dus altijd 301. De #1 fout die ik in support-werk zie: WordPress' Redirection-plugin staat soms default op 302, en mensen vergeten dat te wisselen. Gevolg: maandenlang lekt SEO-waarde weg.

5 scenario's waarin je 301 gebruikt

1. Sitemigratie naar nieuw domein

Je verhuist oude-naam.nl naar nieuwe-naam.nl. Iedere URL op het oude domein moet 301-redirecten naar het corresponderende pad op het nieuwe domein. Niet alleen de homepage — elke indexable URL.

# In .htaccess op oude-naam.nl
RewriteEngine On
RewriteRule ^(.*)$ https://nieuwe-naam.nl/$1 [L,R=301]

2. URL-structuur wijziging

Van /blog/2019/post-naam.html naar /blog/post-naam/. Of van ?p=123 naar /blog/leesbare-titel/. Per oude URL een 301 naar de nieuwe equivalent.

3. HTTP → HTTPS

Niet leeftijdsgebonden meer (sinds 2018 zit elke nieuwe site direct op HTTPS), maar als jouw oude site nog HTTP serveert: 301-redirect alle HTTP-verkeer naar HTTPS. Anders ranken Google en bezoekers de HTTP-versie als duplicaat.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

4. www → non-www (of andersom)

Kies één canonieke variant en redirect de andere. Anders ziet Google twee versies van dezelfde site — duplicate content.

5. Verwijderde pagina met inkomende links

Een blog-post is verwijderd, maar er zijn externe links naar. 301-redirect naar het meest relevante alternatief (categorie-pagina, opvolger-artikel) i.p.v. een 404. Dat behoudt link-equity en geeft bezoekers iets nuttigs.

Hoe configureer je een 301

Apache (.htaccess)

# Eenvoudige 301
Redirect 301 /oude-pagina /nieuwe-pagina

# Met regex (handig voor patterns)
RewriteEngine On
RewriteRule ^blog/oud/(.*)$ /blog/nieuw/$1 [L,R=301]

# Met querystring-behoud
RewriteRule ^oude-pagina$ /nieuwe-pagina [L,R=301,QSA]

Voor bulk-redirects (50+) gebruik mijn .htaccess builder of importeer een CSV in de WordPress Redirection-plugin.

Nginx

server {
    listen 80;
    server_name oude-naam.nl;
    return 301 https://nieuwe-naam.nl$request_uri;
}

# Of voor specifieke paden
location = /oude-pagina {
    return 301 /nieuwe-pagina;
}

WordPress (zonder .htaccess)

Plugin Redirection: Tools > Redirection > Add new. Default is 301 maar check — soms op 302 ingesteld door een ander.

SEO-impact van 301-redirects

Officieel geeft Google sinds 2016 bevestigd dat 301-redirects 100% van de PageRank doorgeven. Geen verlies meer (vroeger was dat ~15%).

In de praktijk zie je vaak wel een tijdelijke ranking-dip de eerste 4–6 weken na een grote redirect-operatie:

  • Google moet de nieuwe URL leren kennen en associeren met content
  • Backlinks moeten van één naar twee URLs worden geverifieerd
  • Het kost crawl-budget om de hele oude site om te lopen

Na 6–8 weken herstelt rankings zich tot pre-migratie niveau (en groeit vaak verder als de nieuwe URL beter geoptimaliseerd is).

Veel-gemaakte 301-fouten

Per ongeluk 302 ingesteld

WordPress Redirection-plugin: check de standaard-redirect-type. Cloudflare Page Rules: kies "Forwarding URL" met "301 - Permanent Redirect" (niet 302). Apache Redirect zonder code-nummer is per default 302! Gebruik altijd Redirect 301 expliciet.

Redirect-loops

URL A → B, B → A. Browsers stoppen na ~20 redirects met ERR_TOO_MANY_REDIRECTS. Vaak door www-redirect die conflicteert met HTTPS-redirect. Mijn redirect tracer detecteert loops.

Te lange redirect-keten

HTTP → HTTPS → non-www → trailing-slash → nieuwe-URL = 4 hops. Elke hop kost ~50–200ms en SEO-waarde verzwakt. Combineer alles in één stap.

Redirect naar homepage in plaats van logische opvolger

Verwijderd product? Redirect naar de categorie-pagina, niet de homepage. Google ziet "alles redirect naar homepage" als soft 404 en negeert het signaal.

301 vs. 308 — wat is het verschil?

Beide zeggen "permanent verplaatst". Het verschil zit in HTTP-method-behoud:

  • 301: browser kan POST-verzoek omzetten naar GET bij volgen van redirect
  • 308: browser moet de oorspronkelijke method behouden (POST blijft POST)

Voor browser-naar-website verkeer (websites met HTML-pages) maakt 't niet uit — 301 is universeel ondersteund en werkt goed. Voor REST-API's waar POST-redirects voorkomen is 308 strikter en correcter.

Praktisch: blijf bij 301 voor websites, gebruik 308 alleen als je expliciet API-method-behoud wilt.

Veelgestelde vragen

Wat is het verschil tussen een 301 en een 302?

301 = permanent verplaatst, 302 = tijdelijk. Voor SEO is dat verschil cruciaal: 301 geeft link-equity door, 302 niet. Voor permanente verhuizingen wil je bijna altijd 301.

Hoeveel link-juice gaat verloren bij een 301?

Officieel: nul. Google bevestigde in 2016 dat 301's 100% van de PageRank doorgeven. In praktijk zie je een lichte tijdelijke dip die binnen 6–8 weken herstelt.

Hoe maak ik een 301-redirect in WordPress?

Drie opties: (1) plugin Redirection (gratis, default 301, met 404-monitoring), (2) handmatig in .htaccess: Redirect 301 /oud /nieuw, (3) Yoast SEO Premium heeft redirect-manager ingebouwd. Voor migraties met 50+ redirects gebruik je mijn .htaccess builder of bulk-upload via Redirection.

Werkt een 301 ook voor querystrings?

Niet automatisch. Redirect 301 /blog /nieuws redirect /blog?p=123 niet naar /nieuws?p=123. Gebruik RewriteRule met QSA-flag: RewriteRule ^blog/(.*)$ /nieuws/$1 [L,R=301,QSA].

Kan ik 301-redirects opheffen?

Ja maar voorzichtig — browsers cachen 301's soms maandenlang. Als je een redirect verwijdert blijven bezoekers met cached versies nog naar de oude bestemming. Voor tijdelijke redirects gebruik je 302 of 307. Wil je 301 echt opheffen: oude URL weer laten werken en wachten tot caches verlopen.