---
title: "HTTP Redirects: complete gids voor 301, 302, 307, 308"
description: "Leer HTTP redirects instellen: 301, 302, 307, 303 en 308. Complete gids met .htaccess, PHP en WordPress voorbeelden. Behoud SEO waarde bij URL wijzigingen."
canonical: https://www.keurigonline.nl/blog/http-redirects-gids
last_modified: 2025-10-27
---

Op deze pagina

## Op deze pagina

1. [Blog](https://www.keurigonline.nl/blog)
2. [Hosting](https://www.keurigonline.nl/blog/categorie/hosting)

# HTTP redirects: complete gids voor 301, 302, 307, 303 en 308 redirects instellen

Leer HTTP redirects instellen: 301, 302, 307, 303 en 308. Complete gids met .htaccess, PHP en WordPress voorbeelden. Behoud SEO waarde bij URL wijzigingen.

- Maarten Keizer
- 15 december 2025
- 34 min lezen

    Link kopiëren [](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.keurigonline.nl%2Fblog%2Fhttp-redirects-gids) [](https://x.com/intent/post?text=HTTP+redirects%3A+complete+gids+voor+301%2C+302%2C+307%2C+303+en+308+redirects+instellen&url=https%3A%2F%2Fwww.keurigonline.nl%2Fblog%2Fhttp-redirects-gids) [](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.keurigonline.nl%2Fblog%2Fhttp-redirects-gids) [](https://wa.me/?text=https%3A%2F%2Fwww.keurigonline.nl%2Fblog%2Fhttp-redirects-gids) [](mailto:?subject=HTTP%20redirects%3A%20complete%20gids%20voor%20301%2C%20302%2C%20307%2C%20303%20en%20308%20redirects%20instellen&body=https%3A%2F%2Fwww.keurigonline.nl%2Fblog%2Fhttp-redirects-gids)

    Op deze pagina

  **Samenvatting: HTTP Redirects**

Een HTTP redirect stuurt bezoekers automatisch van een oude URL naar een nieuwe URL. Gebruik een **301 redirect** voor permanente verhuizingen (SEO waarde 90-99% overgedragen), een **302 redirect** voor tijdelijke situaties en **307/308 redirects** wanneer HTTP method preservation kritiek is. Implementeer via .htaccess, PHP, Nginx of WordPress plugins en test altijd met browser DevTools of cURL.

Stel je voor dat je een oude pagina van je website verwijdert waarna bezoekers op een link vanuit Google of een backlink klikken en een 404 foutmelding krijgen. Dit zorgt voor frustratie, verloren traffic en dalende SEOKeurigOnline zegt [SEO](https://www.keurigonline.nl/begrippenlijst/seo)SEO (search engine optimization) is het beter vindbaar maken van je website in de onbetaalde zoekresultaten. rankings waarbij dit scenario zich duizenden keren per dag afspeelt op websites wereldwijd.

De oplossing is een **HTTPKeurigOnline zegt [HTTP](https://www.keurigonline.nl/begrippenlijst/http)HTTP (HyperText Transfer Protocol) is het protocol dat de communicatie tussen webclients en servers mogelijk maakt. redirectKeurigOnline zegt [Redirect](https://www.keurigonline.nl/begrippenlijst/redirect)Een redirect stuurt bezoekers automatisch door naar een andere webpagina.** oftewel de digitale verhuiskaart van het internet. Net zoals je een verhuiskaart stuurt wanneer je van huis verhuist, vertelt een redirect bezoekers en zoekmachines dat deze pagina is verhuisd naar een nieuwe locatie.

Maar `redirect instellen` is complexer dan het lijkt want er zijn vijf verschillende redirect types (301, 302, 307, 303, 308), meerdere implementatie methodes (.htaccessKeurigOnline zegt [htaccess](https://www.keurigonline.nl/begrippenlijst/htaccess)Een .htaccess bestand is een configuratiebestand voor Apache webservers waarmee je per directory instellingen kunt wijzigen zonder toegang tot de hoofdconfiguratie. , PHPKeurigOnline zegt [PHP](https://www.keurigonline.nl/begrippenlijst/php)PHP (Hypertext Preprocessor) is een populaire open-source scripttaal die speciaal is ontworpen voor webontwikkeling en server-side programmering. , NginxKeurigOnline zegt [Nginx](https://www.keurigonline.nl/begrippenlijst/nginx)Nginx is een open-source webserver, reverse proxy en load balancer die veel gebruikt wordt voor hoogperformante websites. , WordPressKeurigOnline zegt [WordPress](https://www.keurigonline.nl/begrippenlijst/wordpress)WordPress is een open-source contentmanagementsysteem (CMS) geschreven in PHP, waarmee je eenvoudig websites en blogs kunt bouwen en beheren. , Next.js) en kritieke SEO en security overwegingen.

In deze complete gids behandelen we **alles** wat je moet weten over HTTP redirects waarbij je leert wanneer je welk redirect type moet gebruiken, hoe je ze correct implementeert op verschillende platforms, hoe je SEO waarde behoudt en hoe je security problemen vermijdt. Of je nu developer bent, site owner of SEO professional, na het lezen van deze gids kun je redirects professioneel configureren.

## Wat zijn HTTP redirects?

**Definitie:** Een HTTP redirect is een server response (3xx status code) die browsers automatisch doorstuurt naar een andere URL via de Location header. De server vertelt de browser: "Deze pagina is verplaatst, ga naar deze nieuwe locatie."

Een HTTP redirect is een **server response** die je browser automatisch naar een andere URL stuurt. Wanneer je een URL bezoekt, stuurt de server een 3xx status code terug met een `Location` header die de nieuwe URL bevat waarna je browser deze redirect automatisch volgt.

**Hoe werkt een HTTP redirect in 4 stappen**

1. **Browser request** — Browser vraagt: `https://example.com/oude-pagina`
2. **Server response** — Server antwoordt: "301 Moved Permanently" met nieuwe locatie in Location header
3. **Automatische navigatie** — Browser navigeert automatisch naar de nieuwe URL
4. **Pagina weergave** — Gebruiker ziet de nieuwe pagina (zonder handmatige actie)

### Wanneer gebruik je redirects?

HTTP redirects zijn essentieel in verschillende scenario's:

- **Domain migratie**: Verhuizen van oud-domein.nl naar nieuw-domein.nl
- **URL structuur wijziging**: Van `/product-123` naar `/categorie/product-123`
- **Pagina verwijdering**: Oude pagina redirecten naar relevante vervanging
- **HTTPSKeurigOnline zegt [HTTPS](https://www.keurigonline.nl/begrippenlijst/https)HTTPS (HyperText Transfer Protocol Secure) is HTTP over een versleutelde TLS-verbinding tussen browser en webserver. migratie**: Van `http://` naar `https://`
- **wwwKeurigOnline zegt [WWW](https://www.keurigonline.nl/begrippenlijst/www)WWW (World Wide Web) is een systeem van onderling verbonden webpagina's die via internet toegankelijk zijn. canonicalization**: Kiezen tussen `www.site.nl` en `site.nl`
- **Content consolidatie**: Meerdere oude artikelen samenvoegen naar één comprehensive guide
- **Seasonal campaigns**: Tijdelijke redirects voor promoties of A/B testing
- **Taalversies**: Gebruikers redirecten naar correcte taalversie

### Redirect vs canonical vs noindex

Niet elke situatie vereist een redirect. Hier is een decision tree:

- **Moet de oude pagina verdwijnen?** → Gebruik een **redirect** (301)
- **Blijven beide pagina's online maar duplicate content?** → Gebruik een **canonical tagKeurigOnline zegt [Canonical tag](https://www.keurigonline.nl/begrippenlijst/canonical-tag)Een canonical tag (rel="canonical") is een HTML-element dat aangeeft welke URL de voorkeursversie van een pagina is.**
- **Pagina blijft online maar moet uit Google index?** → Gebruik **[robots meta tag](https://developers.google.com/search/docs/crawling-indexing/block-indexing)** (noindex)

Een redirect *vervangt* de oude URL door de nieuwe terwijl een canonical tag *consolideert* PageRank waarbij beide URLs bereikbaar blijven. Een noindex tag *verbergt* de pagina voor zoekmachines maar blijft toegankelijk voor gebruikers.

## Complete redirect types uitgelegd

Er bestaan vijf belangrijke server-side redirect types elk met specifieke use cases. De meeste websites gebruiken alleen 301 en 302 maar **307, 303 en 308** zijn essentieel voor specifieke scenarios.

### Comparison table: alle redirect types

| Code | Type | Method | SEO | Gebruik |
|---|---|---|---|---|
| **301** | Permanent | Kan wijzigen | ✅ Equity over | URL/domein migratie |
| **302** | Tijdelijk | Kan wijzigen | ⚠️ Blijft op oud | Promoties, A/B tests |
| **307** | Tijdelijk | Behouden | ⚠️ Blijft op oud | POST forms tijdelijk |
| **308** | Permanent | Behouden | ✅ Equity over | API's, POST permanent |

### 301 Moved Permanently

Een `301 redirect` vertelt browsers en zoekmachines dat **deze pagina permanent is verhuisd** waarbij de oude URL niet meer bestaat en alle bezoekers voortaan de nieuwe URL moeten gebruiken (bron: [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/301)).

**SEO impact:** Volgens Google wordt 90-99% van link equity overgedragen bij een 301 redirect (bron: [Google Search Central](https://developers.google.com/search/docs/crawling-indexing/301-redirects)) waarbij de historische 15% dampingsfactor myth in 2016 officieel werd ontkracht door [Gary Illyes van Google](https://searchengineland.com/google-no-pagerank-dilution-using-301-302-30x-redirects-anymore-254608).

**HTTP method behavior:** Een 301 redirect kan de HTTP method wijzigen waarbij een POST request door sommige browsers kan worden omgezet naar een GET request op de nieuwe URL. Voor de meeste websites is dit geen probleem maar bij APIKeurigOnline zegt [API](https://www.keurigonline.nl/begrippenlijst/api)Een API (Application Programming Interface) is een set regels en protocollen waarmee softwareapplicaties met elkaar kunnen communiceren en gegevens uitwisselen. endpoints kan dit ongewenst zijn.

**Caching:** Browsers cacheKeurigOnline zegt [Cache](https://www.keurigonline.nl/begrippenlijst/cache)Een cache is een tijdelijke opslaglaag die veelgebruikte gegevens bewaart voor snellere toegang en betere prestaties. n 301 redirects aggressief wat snellere navigatie betekent voor terugkerende bezoekers maar ook dat een verkeerd geconfigureerde 301 moeilijk terug te draaien is zonder cache clearing.

**Use cases**:

- Domain migratie: `oud-domein.nl → nieuw-domein.nl`
- URL cleanup: `/oude-lange-url-naam → /korte-url`
- HTTPS migratie: `http://site.nl → https://site.nl`
- Content consolidatie: Drie oude artikelen → één comprehensive guide

### 302 Found (tijdelijke redirect)

Een `302 redirect` is **tijdelijk** waarbij de oude URL blijft bestaan en later terugkomt. Zoekmachines houden SEO waarde bij de oude URL en dragen deze niet over naar de tijdelijke bestemming (bron: [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/302)).

**SEO impact:** Link equity blijft op de oude URL wat gewenst is voor tijdelijke situaties maar verkeerd gebruik van 302 in plaats van 301 kan SEO schade veroorzaken.

**Caching:** Browsers cachen 302 redirects minimaal zodat wanneer de redirect wordt verwijderd gebruikers automatisch de originele URL weer zien.

**Use cases**:

- Tijdelijke promoties: `/product → /black-friday-deal`
- A/B testing: Tijdelijk verkeer splitsen tussen varianten
- Maintenance: `/page → /onderhoud-pagina`
- Seasonal content: Tijdelijke kampagne pagina's

**Let op: 302 redirect duur**

Als je een 302 redirect te lang laat staan (maanden) kan Google deze behandelen als permanent en alsnog naar 301 behavior overschakelen. Evalueer tijdelijke redirects regelmatig.

### 307 Temporary Redirect (met method preservation)

Een `307 redirect` is de moderne versie van 302 met één cruciaal verschil waarbij **HTTP method preservation is gegarandeerd**. Een POST request blijft POST en een GET blijft GET (bron: [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/307)).

**Verschil met 302:** Bij een 302 redirect kunnen browsers POST requests omzetten naar GET terwijl bij 307 dit expliciet verboden is want de browser MOET de originele method behouden.

**SEO impact**: Link equity blijft op de oude URL, net als bij 302.

**Use cases**:

- Form submissions tijdelijk naar andere endpoint (POST blijft POST)
- API endpoints met tijdelijke downtimeKeurigOnline zegt [Downtime](https://www.keurigonline.nl/begrippenlijst/downtime)Downtime is de tijd waarin een website, server of andere dienst niet bereikbaar is of niet werkt zoals hij moet. (PUT/DELETE blijven behouden)
- POST/PUT/DELETE requests naar maintenance endpoint

De meeste websites hebben 307 niet nodig maar voor moderne web applications en APIs is het essentieel wanneer HTTP method preservation kritiek is.

### 303 See Other (POST → GET conversie)

Een `303 redirect` forceert een wijziging van POST naar GET waarbij dit het enige redirect type is dat **altijd** de HTTP method wijzigt ongeacht browser (bron: [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/303)).

**Primary use case: Post-Redirect-Get pattern** wat een web development best practice is om dubbele form submissions te voorkomen.

1. Gebruiker submit form (POST request)
2. Server verwerkt data
3. Server stuurt 303 redirect naar confirmation page
4. Browser doet GET request voor confirmation page
5. Als gebruiker F5 drukt, wordt alleen de confirmation page ververst (geen dubbele submission)

**SEO impact**: Niet relevant - 303 wordt gebruikt voor forms en applicatie logic, niet voor SEO pages.

**Code voorbeeld** (PHP):

```
<?php
// Na form processing
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Process form data
    $result = processFormData($_POST);

    // 303 redirect naar bedankt pagina
    header("HTTP/1.1 303 See Other");
    header("Location: https://www.jouwsite.nl/bedankt");
    exit();
}
?>
```

### 308 Permanent Redirect (met method preservation)

Een `308 redirect` is de moderne versie van 301 met gegarandeerde **method preservation** waarbij het het permanente karakter van 301 combineert met de method garantie van 307 (bron: [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/308)).

**Verschil met 301:** Bij 301 kan POST worden GET terwijl bij 308 POST altijd POST blijft, PUT blijft PUT en DELETE blijft DELETE.

**SEO impact**: Link equity wordt overgedragen, net als bij 301 (90-99%).

**Use cases**:

- REST APIKeurigOnline zegt [REST API](https://www.keurigonline.nl/begrippenlijst/rest-api)Een REST API (Representational State Transfer) wisselt gegevens uit via gewone HTTP-verzoeken op vaste URL's, meestal in JSON. endpoints permanent verplaatst (method is critical)
- POST/PUT/DELETE endpoints naar nieuwe URL
- Modern web applications waar method preservation essentieel is

**Let op: Browser support voor 308**

308 is relatief nieuw (sinds 2015) waardoor oudere browsers 308 mogelijk niet herkennen. Check je browser support requirements voordat je 308 gebruikt in plaats van 301.

### Meta refresh & JavaScript redirects

Naast server-side redirects bestaan er **client-side redirects** via HTMLKeurigOnline zegt [HTML](https://www.keurigonline.nl/begrippenlijst/html)HTML (HyperText Markup Language) is de opmaaktaal die de structuur en inhoud van een webpagina vastlegt. en JavaScriptKeurigOnline zegt [JavaScript](https://www.keurigonline.nl/begrippenlijst/javascript)JavaScript is een programmeertaal die wordt gebruikt om interactieve en dynamische websites te maken. die minder preferred zijn vanuit SEO perspectief.

**Meta refresh tag**:

```
<!-- 0 seconds = immediate -->
<meta http-equiv="refresh" content="0;url=https://www.jouwsite.nl/nieuwe-pagina">

<!-- 5 seconds delay met melding -->
<meta http-equiv="refresh" content="5;url=https://www.jouwsite.nl/nieuwe-pagina">
<p>Als u niet wordt doorverwezen, <a href="https://www.jouwsite.nl/nieuwe-pagina">klik hier</a>.</p>
```

**JavaScript redirect**:

```
// Immediate redirect
window.location.href = 'https://www.jouwsite.nl/nieuwe-pagina';

// Of met replace (geen history entry)
window.location.replace('https://www.jouwsite.nl/nieuwe-pagina');
```

**Let op: SEO risico's bij client-side redirects**

- Google kan ze missen (geen garantie dat Googlebot JavaScript uitvoert)
- Langzamer dan server-side (extra rendering tijd)
- Werken niet als JavaScript disabled is
- PageRank mogelijk niet 100% overgedragen

**Wanneer acceptabel:** Alleen als je geen server toegang hebt zoals bij statische hosting, legacy systemen of voor niet-SEO critical pages zoals applicatie redirects binnen authenticated areas.

## Implementatie methodes

Er zijn 7+ manieren om redirects te implementeren waarbij de juiste keuze afhangt van je server (ApacheKeurigOnline zegt [Apache](https://www.keurigonline.nl/begrippenlijst/apache)Apache HTTP Server is een open source webserver ontwikkeld door de Apache Software Foundation. vs Nginx), tech stack (WordPress, Next.js, PHP) en technische kennis.

### Apache .htaccess - advanced implementation

Het `.htaccess` bestand is de meest gebruikte methode voor Apache servers waarbij het een configuratie bestand is dat in de root directory van je website staat (bron: [Apache mod\_rewrite documentation](https://httpd.apache.org/docs/2.4/rewrite/remapping.html)). Zie ook onze [complete .htaccess gids met 20+ code snippets](../../../blog/20-htaccess-code-snippets-voor-snellere-websites) voor meer configuratie opties.

#### Basis 301 redirect

```
# Single page redirect
Redirect 301 /oude-pagina https://www.jouwsite.nl/nieuwe-pagina

# Multiple redirects
Redirect 301 /product-a https://www.jouwsite.nl/products/product-a
Redirect 301 /product-b https://www.jouwsite.nl/products/product-b
```

#### Volledige domain redirect

```
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^oud-domein\.nl$ [OR]
RewriteCond %{HTTP_HOST} ^www\.oud-domein\.nl$
RewriteRule ^(.*)$ https://www.nieuw-domein.nl/$1 [R=301,L]
</IfModule>
```

**Uitleg**. `RewriteCond` controleert of het gevraagde domein. `oud-domein.nl` of `www.oud-domein.nl` is. `RewriteRule` redirect alles naar het nieuwe domein. Waarbij `$1` de oorspronkelijke path behoudt.

#### HTTP naar HTTPS redirect

```
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
```

#### www naar non-www canonicalization

```
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
</IfModule>
```

`%1` bevat de captured group uit de `RewriteCond` (het domein zonder www).

#### Advanced: regex patterns

```
# Redirect alle /blog/YYYY/MM/DD/post naar /blog/post
RewriteRule ^blog/[0-9]{4}/[0-9]{2}/[0-9]{2}/(.+)$ /blog/$1 [R=301,L]

# Redirect met query string preservation
RewriteRule ^oude-categorie/(.*)$ /nieuwe-categorie/$1 [R=301,QSA,L]
```

`[0-9]{4}` matched exact 4 cijfers terwijl `QSA` (Query String Append) URL parameters behoudt zoals `?id=123`.

#### Advanced: conditional redirects

```
# Redirect alleen voor specifieke IP
RewriteCond %{REMOTE_ADDR} ^123\.456\.789\.
RewriteRule ^(.*)$ https://special-site.nl/$1 [R=302,L]

# Redirect gebaseerd op user agent
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*
RewriteRule ^mobile/(.*)$ /desktop/$1 [R=301,L]
```

#### Tips & warnings voor .htaccess

- ⚠️ **BackupKeurigOnline zegt [Backup](https://www.keurigonline.nl/begrippenlijst/backup)Een backup is een reservekopie van digitale gegevens die je kunt terugzetten bij dataverlies of storingen. eerst**: Maak altijd een backupKeurigOnline zegt [Backup](https://www.keurigonline.nl/begrippenlijst/backup)Een backup is een reservekopie van digitale gegevens die je kunt terugzetten bij dataverlies of storingen. van .htaccess voordat je wijzigingen maakt
- 📍 **Locatie**: .htaccess moet in de root directory staan (`public_html/` of `www/`)
- ✅ **Test syntax**: Gebruik online .htaccess validators om syntax errors te voorkomen
- 🔧 **Debugging**: Check Apache error logs (`/var/log/apache2/error.log`) bij problemen

**RewriteRule flags uitgelegd**:

- `R=301` = 301 redirect (gebruik R=302 voor tijdelijk)
- `L` = Last (stop met verdere regel processing)
- `QSA` = Query String Append (behoud URL parameters)
- `NC` = No Case (case-insensitive matching)

### Nginx - complete server configuration

Nginx is een moderne high-performance webserver waarbij redirect configuratie gebeurt in server blocks meestal in `/etc/nginx/sites-available/` (bron: [Nginx rewrite module documentation](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html)).

#### Basis redirects

```
server {
    listen 80;
    server_name example.com;

    # 301 redirect single page
    location /oude-pagina {
        return 301 https://example.com/nieuwe-pagina;
    }

    # 302 redirect
    location /tijdelijk {
        return 302 https://example.com/nieuwe-locatie;
    }
}
```

#### Volledige domain redirect

```
server {
    listen 80;
    server_name oud-domein.nl www.oud-domein.nl;
    return 301 https://nieuw-domein.nl$request_uri;
}
```

`$request_uri` behoudt de volledige path en query string.

#### HTTP naar HTTPS

```
server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}
```

#### Advanced: regex redirects

```
# Redirect met regex pattern
location ~ ^/blog/([0-9]{4})/([0-9]{2})/(.+)$ {
    return 301 /blog/$3;
}

# Conditional redirect
if ($host ~* ^www\.(.+)$) {
    return 301 https://$1$request_uri;
}
```

**Tips voor Nginx**:

- `return 301` is sneller dan `rewrite` directive
- `$request_uri` behoudt automatisch query string + path
- Test configuratie: `sudo nginx -t`
- Reload: `sudo systemctl reload nginx`

### PHP - server-side implementation

PHP redirects zijn flexibel en werken op elke PHP-hosting waarbij ze ideaal zijn voor dynamische redirects en conditional redirects. PHP gebruikt de [`header()` functie](https://www.php.net/manual/en/function.header.php) om HTTP headers te sturen.

#### 301 permanent redirect

```
<?php
// 301 redirect
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://www.jouwsite.nl/nieuwe-pagina");
exit();
?>
```

#### 302 temporary redirect

```
<?php
header("HTTP/1.1 302 Found");
header("Location: https://www.jouwsite.nl/tijdelijke-pagina");
exit();
?>
```

#### 307 temporary redirect (method preservation)

```
<?php
header("HTTP/1.1 307 Temporary Redirect");
header("Location: https://www.jouwsite.nl/nieuwe-endpoint");
exit();
?>
```

#### 303 See Other (POST → GET)

```
<?php
// Na form processing
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Process form data
    $result = processFormData($_POST);

    // 303 redirect naar confirmation page
    header("HTTP/1.1 303 See Other");
    header("Location: https://www.jouwsite.nl/bedankt");
    exit();
}
?>
```

#### Conditional redirects

```
<?php
// Redirect gebaseerd op domein
if ($_SERVER['HTTP_HOST'] === 'oud-domein.nl') {
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: https://nieuw-domein.nl" . $_SERVER['REQUEST_URI']);
    exit();
}

// Redirect gebaseerd op HTTPS
if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
    exit();
}
?>
```

:

- ⚠️ **exit() is CRITICAL**: Altijd `exit()` na header() aanroepen, anders wordt code verder uitgevoerd
- ⚠️ **Headers eerst**: Geen output (echo, HTMLKeurigOnline zegt [HTML](https://www.keurigonline.nl/begrippenlijst/html)HTML (HyperText Markup Language) is de opmaaktaal die de structuur en inhoud van een webpagina vastlegt. , whitespace) voor `header()` calls
- ✅ **REQUEST\_URI**: Behoudt automatisch path + query string
- 🔧 **Debugging**: Check voor "headers already sent" errors in logs

### WordPress - plugins & custom code

WordPress heeft meerdere opties voor `redirect instellen wordpress` van beginner-vriendelijke plugins tot custom PHP code.

#### Via Redirection plugin (recommended)

De [Redirection plugin](https://wordpress.org/plugins/redirection/) is de meest populaire WordPress redirect pluginKeurigOnline zegt [Plugin](https://www.keurigonline.nl/begrippenlijst/plugin)Een plugin is een uitbreiding die je aan software zoals WordPress toevoegt om er een nieuwe functie bij te krijgen. met 2+ miljoen actieve installaties. Lees ook onze specifieke gids over [301 redirects voor verwijderde WordPress pagina's](../../../blog/301-redirect-wordpress-verwijderde-paginas).

1. Ga naar: Plugins → Nieuwe plugin toevoegen
2. Zoek: "Redirection"
3. Installeer en activeer de plugin
4. Ga naar: Extra → Redirection
5. Klik "Add New" redirect
6. Vul in:

    - Source URL: `/oude-pagina`
    - Target URL: `https://www.jouwsite.nl/nieuwe-pagina`
    - Type: 301 (dropdown)
7. Klik "Add Redirect"

**Voordelen Redirection plugin:** Ingebouwde logging, overzicht van alle redirects, regex support, conditional logic en 404 error monitoring.

#### Via Yoast SEO Premium

Als je [Yoast SEO Premium](https://yoast.com/wordpress/plugins/seo/) hebt, zijn redirects ingebouwd:

1. Ga naar: SEO → Redirects
2. Voeg redirect toe via interface
3. Yoast detecteert automatisch URL changes en suggereert redirects

#### Custom code in functions.php

```
// In functions.php van je theme
add_action('template_redirect', 'custom_redirects');

function custom_redirects() {
    if (is_page('oude-pagina-slug')) {
        wp_redirect('https://www.jouwsite.nl/nieuwe-pagina', 301);
        exit();
    }

    // Multiple redirects
    $redirects = array(
        'oude-slug-1' => '/nieuwe-pagina-1',
        'oude-slug-2' => '/nieuwe-pagina-2',
    );

    foreach ($redirects as $old => $new) {
        if (is_page($old)) {
            wp_redirect($new, 301);
            exit();
        }
    }
}
```

**Tips voor WordPress redirects**:

- ✅ **Plugin preferred**: Eenvoudiger te beheren en heeft logging
- 📊 **Monitor 404s**: Redirection plugin toont welke 404s redirects nodig hebben
- ⚠️ **Performance**: Te veel redirects in databaseKeurigOnline zegt [Database](https://www.keurigonline.nl/begrippenlijst/database)Een database is een georganiseerde verzameling gegevens die elektronisch wordt opgeslagen en beheerd. kunnen queries vertragen (100+ redirects = overweeg .htaccess)

### Next.js - modern framework redirects

Next.js heeft drie methodes voor redirects elk voor verschillende scenarios (bron: [Next.js Redirects documentation](https://nextjs.org/docs/app/building-your-application/routing/redirecting)).

#### In next.config.js (preferred)

```
// next.config.js
module.exports = {
async redirects() {
    return [
      {
        source: '/oude-pagina',
        destination: '/nieuwe-pagina',
        permanent: true, // 301 redirect
      },
      {
        source: '/tijdelijk',
        destination: '/nieuwe-locatie',
        permanent: false, // 302 redirect
      },
      // Regex pattern
      {
        source: '/blog/:year/:month/:day/:slug',
        destination: '/blog/:slug',
        permanent: true,
      },
      // Wildcard
      {
        source: '/oude-categorie/:path*',
        destination: '/nieuwe-categorie/:path*',
        permanent: true,
      },
    ];
},
};
```

**Voordelen**: Geëvalueerd tijdens build time, zeer performant, declarative syntax.

#### In Middleware (edge redirects)

```
// middleware.ts
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';

export function middleware(request: NextRequest) {
if (request.nextUrl.pathname === '/oude-pagina') {
    return NextResponse.redirect(
      new URL('/nieuwe-pagina', request.url),
      { status: 301 }
    );
}

// Conditional redirect (bijv. auth check)
const isAuthenticated = request.cookies.get('auth');
if (!isAuthenticated && request.nextUrl.pathname.startsWith('/dashboard')) {
    return NextResponse.redirect(new URL('/login', request.url));
}
}
```

**Voordelen:** Runs on edge globally wat perfect is voor conditional/dynamic redirects.

#### In getServerSideProps

```
// pages/oude-pagina.tsx
export async function getServerSideProps() {
return {
    redirect: {
      destination: '/nieuwe-pagina',
      permanent: true, // 301
    },
};
}
```

**Voordelen:** Page-specific logic met toegang tot props/data voor conditional redirects.

**Next.js redirect strategie**:

- ✅ **Static redirects**: Use `next.config.js` (fastest)
- ⚡ **Conditional/auth redirects**: Use Middleware
- 📱 **Data-dependent**: Use `getServerSideProps`

### JavaScript & meta refresh (client-side)

Client-side redirects zijn minder preferred, maar soms noodzakelijk.

#### JavaScript window.location

```
// Immediate redirect
window.location.href = 'https://www.jouwsite.nl/nieuwe-pagina';

// Met replace (geen history entry)
window.location.replace('https://www.jouwsite.nl/nieuwe-pagina');
```

`replace()` voorkomt dat gebruikers met de back button terugkeren naar de oude pagina.

#### Meta refresh tag

```
<!-- 0 seconds = immediate -->
<meta http-equiv="refresh" content="0;url=https://www.jouwsite.nl/nieuwe-pagina">

<!-- 5 seconds delay met bericht -->
<meta http-equiv="refresh" content="5;url=https://www.jouwsite.nl/nieuwe-pagina">
<p>Als u niet automatisch wordt doorverwezen, <a href="https://www.jouwsite.nl/nieuwe-pagina">klik hier</a>.</p>
```

**Let op: JavaScript redirect SEO risico's**

- Google kan deze redirects missen (JavaScript execution required)
- Langzamer dan server-side (extra rendering tijd)
- Werkt niet met JavaScript disabled
- Mogelijk niet 100% link equity overdracht

**Alleen gebruiken als**: Geen server toegang, legacy systemen, niet-SEOKeurigOnline zegt [SEO](https://www.keurigonline.nl/begrippenlijst/seo)SEO (search engine optimization) is het beter vindbaar maken van je website in de onbetaalde zoekresultaten. pages.

### cPanel & hosting control panels

Veel hosting providers bieden GUI interfaces voor redirects wat ideaal is voor niet-technische gebruikers.

#### cPanel redirects interface

1. Log in op cPanel
2. Ga naar sectie: **Domeinen** → **Redirects**
3. Select type: **Permanent (301)** of **Temporary (302)**
4. Vul in:

    - Van: `/oude-pagina`
    - Naar: `https://www.jouwsite.nl/nieuwe-pagina`
    - Redirect met of zonder wwwKeurigOnline zegt [WWW](https://www.keurigonline.nl/begrippenlijst/www)WWW (World Wide Web) is een systeem van onderling verbonden webpagina's die via internet toegankelijk zijn.
5. Klik **"Add"**

**Voordelen cPanel**:

- ✅ Geen code kennis nodig
- 📊 Overzicht van alle redirects
- 🔧 Test button om redirect te verifiëren

**Let op: cPanel conflict**

cPanel genereert .htaccess regels automatisch. Als je later .htaccess handmatig bewerkt kunnen cPanel redirects conflicteren met je handmatige regels.

## SEO overwegingen

Redirects hebben significante impact op je SEO waarbij je correct geïmplementeerd je rankings behoudt maar verkeerd gedaan je traffic verliest.

### Link equity & PageRank flow

**Historische context:** In 2000 publiceerde Google een patent met een dampingsfactor van 0.85 wat werd geïnterpreteerd als 15% PageRank verlies per redirect waarbij deze myth persisteerde tot 2016.

**2016 clarification:** Gary Illyes van Google bevestigde op Twitter dat 301 redirects **geen PageRank verliezen** omdat de dampingsfactor geldt voor alle links en niet specifiek voor redirects.

**Modern understanding:** **90-99% van link equity wordt overgedragen** bij 301 en 308 redirects (bron: [Moz SEO Guide](https://moz.com/learn/seo/redirection)) waarbij het kleine verlies van 1-10% inherent is aan alle links en niet specifiek aan redirects.

**Redirect type comparison**:

- **301/308 redirect**: 90-99% link equity naar nieuwe URL
- **302/307 redirect**: Link equity blijft bij oude URL (niet overgedragen)
- **303 redirect**: Niet relevant voor SEO (gebruikt voor forms)

### Crawl budget implications

Redirect chains verspillen [crawl budget](https://developers.google.com/search/docs/crawling-indexing/large-site-managing-crawl-budget) oftewel het aantal pagina's dat Google crawlt per dag.

**Impact van redirect chains**:

- Elke redirect = aparte HTTP request
- Chain A→B→C = 3 requests in plaats van 1
- Langzamere indexering van nieuwe content
- Google's guidance: Max 3-5 redirects in chain

**Tip:** Maak altijd directe redirects. Als je A→B had en B→C toevoegt, update A→C direct om redirect chains te voorkomen.

### Soft 404 issue

Google behandelt **irrelevante redirects** als soft 404 errors. Link equity gaat verloren.

**Voorbeeld van verkeerde redirect**:

- ❌ **Fout**: Alle oude product pagina's → homepage
- ✅ **Correct**: Product pagina → relevante categorie of vergelijkbaar product

**Google's rationale:** Als de redirect niet relevant is voor de gebruiker, wordt het behandeld alsof de pagina niet bestaat waarbij de oude pagina link equity verliest.

**Tip: Voorkom soft 404s**

- Redirect naar **relevante** pagina (content similarity)
- 404 is beter dan irrelevante redirect
- Use `410 Gone` voor permanent verwijderde content (explicieter dan 404)

### Redirect vs canonical tag

Wanneer gebruik je een redirect vs [canonical tag](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls)?

**Decision tree**:

```
Moet de oude pagina verdwijnen?
├─ Ja → Use REDIRECT (301)
└─ Nee (beide pagina's blijven online)
    ├─ Duplicate content probleem?
    │ ├─ Ja → Use CANONICAL TAG
    │ └─ Nee → Geen actie nodig
    └─ Pagina uit Google index maar online blijven?
        └─ Use ROBOTS META TAG (noindex)
```

**Canonical vs Redirect vergelijking**:

| Aspect | Canonical Tag | Redirect |
|---|---|---|
| URL bereikbaar? | ✅ Beide URLs bereikbaar | ❌ Oude URL niet meer bereikbaar |
| PageRank consolidatie | ✅ Consolidatie naar canonical | ✅ Transfer naar nieuwe URL |
| User experience | Blijft op originele URL | Navigeert naar nieuwe URL |
| Use case | Filters, sorting, pagination | URL wijziging, domain migratie |

### Google Search Console monitoring

Monitor je redirects via Google Search ConsoleKeurigOnline zegt [Search Console](https://www.keurigonline.nl/begrippenlijst/search-console)Search Console is een gratis dienst van Google die laat zien hoe je website presteert in de zoekresultaten van Google. :

**Setup na redirects**:

1. Submit nieuwe sitemapKeurigOnline zegt [Sitemap](https://www.keurigonline.nl/begrippenlijst/sitemap)Een sitemap is een XML-bestand met de URL's van je website, zodat zoekmachines je pagina's makkelijker vinden. (verwijder oude URLs uit sitemap)
2. Monitor **Coverage** rapport voor redirect errors
3. Use **URL Inspection** tool om redirect status te checken
4. Check **Links** rapport om te zien of oude backlinks nog wijzen naar oude URLs

**Tip: Google Search Console monitoring**

- Neem redirects NIET op in je sitemap
- Monitor gedurende 3-6 maanden na grote migratie
- Check voor toename in crawl errors

### Hoelang redirects laten staan?

**Google's guidance:** In 2021 zei [John Mueller in de Ask Googlebot video](https://www.youtube.com/watch?v=9sbYdKB0Vhk) dat 1 jaar voldoende is voor 301 redirects.

**Real-world advice**:

- ✅ **Permanent laten staan is het veiligst**
- Oude backlinks blijven jaren bestaan
- Minimale performance impact
- Voorkomt broken links en verloren traffic

**Exception:** Bij domain migratie waar het oude domein expires, kunnen redirects na 2-3 jaar verwijderd worden als het oude domein offline gaat.

## Security best practices

Redirects kunnen security risico's vormen als ze niet correct geïmplementeerd zijn waarbij open redirect vulnerabilities vaak misbruikt worden voor phishingKeurigOnline zegt [Phishing](https://www.keurigonline.nl/begrippenlijst/phishing)Phishing is een cyberaanval waarbij criminelen zich voordoen als betrouwbare organisaties om gevoelige informatie te stelen. . Dit is onderdeel van een bredere [website beveiligingsstrategie](../../../blog/website-beveiligen).

### Open redirect vulnerability

Een **open redirect** treedt op. Wanneer een attacker de redirect destination kan manipuleren.

**Vulnerable code voorbeeld (PHP)**:

```
<?php
// ❌ VULNERABLE - accepteert elke URL
$redirect_url = $_GET['url'];
header("Location: " . $redirect_url);
exit();
?>
```

**Attack scenario**:

```
https://jouw-trusted-site.nl/redirect.php?url=https://malicious-phishing-site.com
                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                           Attacker controlled!
```

Gebruikers zien de trusted domain in de URL, klikken erop en worden doorverwezen naar een phishingKeurigOnline zegt [Phishing](https://www.keurigonline.nl/begrippenlijst/phishing)Phishing is een cyberaanval waarbij criminelen zich voordoen als betrouwbare organisaties om gevoelige informatie te stelen. site.

**Secure code voorbeeld (whitelist approach)**:

```
<?php
// ✅ SECURE - whitelist van toegestane domains
$allowed_domains = ['jouwsite.nl', 'partner-site.nl', 'trusted-partner.com'];
$redirect_url = $_GET['url'];

// Parse URL en check domain
$parsed = parse_url($redirect_url);
if (!isset($parsed['host']) || !in_array($parsed['host'], $allowed_domains)) {
    // Invalid redirect, ga naar homepage
    header("Location: https://jouwsite.nl/");
} else {
    // Valid domain, allow redirect
    header("Location: " . $redirect_url);
}
exit();
?>
```

### Host header attacks

Attackers kunnen de `HTTP_HOST` header manipuleren. Om redirects naar hun domain te forceren.

**Vulnerable code**:

```
<?php
// ❌ VULNERABLE - vertrouwt HTTP_HOST
header("Location: https://" . $_SERVER['HTTP_HOST'] . "/success");
?>
```

**Secure code**:

```
<?php
// ✅ SECURE - hardcoded trusted domain
$trusted_domain = 'jouwsite.nl';
header("Location: https://" . $trusted_domain . "/success");
?>
```

### Best practices checklist

**Validation**:

- ✅ Whitelist toegestane redirect destinations
- ✅ Valideer URL format met `parse_url()`
- ✅ Check domain tegen allowed list
- ❌ NOOIT user input direct gebruiken in redirect

**Relative URLs preferred**:

- ✅ Use `/nieuwe-pagina` instead of `https://site.nl/nieuwe-pagina`
- Voorkomt cross-domain redirects
- Geen domain validation nodig

**Framework built-ins**:

- [Laravel](https://laravel.com/docs/redirects): `redirect()->route('name')` (veilig)
- [WordPress](https://developer.wordpress.org/reference/functions/wp_redirect/): `wp_redirect()` met `wp_validate_redirect()`
- Next.js: Redirects in `next.config.js` (geen user input)

**Logging & monitoring**:

- ✅ Log alle redirect attempts met destination URL
- ✅ Alert bij external redirect attempts
- ✅ Monitor voor suspicious patterns

### OWASP guidelines

[OWASP (Open Web Application Security Project)](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) heeft officiële guidance voor redirect security inclusief [CWE-601 (URL Redirection to Untrusted Site)](https://cwe.mitre.org/data/definitions/601.html).

**Key recommendations**:

1. **Avoid redirects based on user input** - gebruik parameter IDs in plaats van URLs
2. **Use whitelist validation** - nooit blacklists (te easy to bypass)
3. **Sanitize input** - ook bij whitelist approach
4. **Framework built-ins** - gebruik framework functies wanneer mogelijk

**Alternative approach: Parameter mapping**:

```
<?php
// In plaats van URL in parameter, gebruik ID
$redirect_map = [
    1 => '/page-one',
    2 => '/page-two',
    3 => '/partner-site'
];

$redirect_id = (int)$_GET['id'];
if (isset($redirect_map[$redirect_id])) {
    header("Location: " . $redirect_map[$redirect_id]);
} else {
    header("Location: /");
}
?>
```

## Testing & monitoring

Redirects moeten grondig getest worden voordat ze live gaan en continu gemonitord na implementatie.

### Browser DevTools testing

**Redirect testen met DevTools in 5 stappen**

1. **Open DevTools** — Druk F12
2. **Ga naar Network tab** — Selecteer het Network tabblad
3. **Enable Preserve log** — Anders verdwijnt de log na redirect
4. **Bezoek oude URL** — Type de te testen URL in de adresbalk
5. **Controleer redirect** — Check status code (301/302/307), Location header en timing

**Wat te checken**:

- ✅ Correcte status code (301 voor permanent, 302 voor tijdelijk)
- ✅ Location header wijst naar correcte URL
- ✅ Geen redirect chains (direct van A naar B)
- ✅ Response time < 200ms per redirect

### cURL command testing

cURL is een command-line tool. Perfect voor redirect testing.

**Basic redirect check**:

```
# Show volledige redirect chain met headers
curl -L -v https://oude-url.nl

# Only show headers (follow redirects)
curl -I -L https://oude-url.nl

# Don't follow redirects (show eerste response only)
curl -I https://oude-url.nl
```

**Output interpreteren**:

```
< HTTP/1.1 301 Moved Permanently
< Location: https://nieuwe-url.nl
            ^^^^^^^^^^^^^^^^^
            Redirect destination

< HTTP/1.1 200 OK
^^^^^^^^^
Final response (na redirect)
```

**Check redirect timing**:

```
curl -w "Time: %{time_total}s\n" -o /dev/null -s https://oude-url.nl
```

### Online testing tools

Verschillende online tools bieden visuele redirect chain checking. Met handige features.

#### HTTPStatus.io

[HTTPStatus.io](https://httpstatus.io/) is een gratis online tool. Voor redirect chain visualization.

- ✅ Complete redirect chain visualization
- ✅ Status codes, response times, headers
- ✅ Identifies loops en chains
- ✅ Free tool

#### Redirect Checker

[Redirect-checker.org](https://www.redirect-checker.org/) biedt een simple interface. Voor redirectKeurigOnline zegt [Redirect](https://www.keurigonline.nl/begrippenlijst/redirect)Een redirect stuurt bezoekers automatisch door naar een andere webpagina. testing.

- ✅ Simple interface
- ✅ Shows complete redirect path
- ✅ HTTP en HTTPS testing

#### Screaming Frog SEO Spider

[Screaming Frog SEO Spider](https://www.screamingfrog.co.uk/seo-spider/) is een desktop crawlerKeurigOnline zegt [Crawler](https://www.keurigonline.nl/begrippenlijst/crawler)Een crawler is een programma dat automatisch webpagina's bezoekt en links volgt, zoals Googlebot van Google. tool. Perfect voor large-scale redirect audits.

- ✅ Crawl entire site voor redirects
- ✅ Identify redirect chains
- ✅ Detect redirect loops
- ✅ Find redirects ending in 404
- ✅ Export naar CSV

**Screaming Frog configuration**:

1. Mode: Spider
2. Configuration → Spider → Check "Follow Redirects"
3. Crawl je website
4. Filter: Response Codes → 3xx Redirects
5. Check kolom "Redirect Chains" voor problemen

### Google Search Console monitoring

**Key reports voor redirect monitoring**:

**Coverage rapport**:

- Check "Excluded" sectie voor redirect errors
- "Redirect error" indicates broken redirects
- "Page with redirect" shows which pages redirect

**URL Inspection tool**:

1. Enter oude URL
2. Check "Coverage" status
3. Should show "Page redirects to X"
4. Verify redirect destination is correct

**Performance rapport**:

- Monitor traffic drop na redirects
- Check if nieuwe URLs krijgen impressions/clicks
- Timeline should show gradual shift van old naar new

### Automated testing scripts

Voor large-scale migraties. Zijn automated tests essentieel.

**Bash script voorbeeld**:

```
#!/bin/bash
# test-redirects.sh

URLS_FILE="redirects.txt" # Format: old-url new-url

while IFS= read -r line; do
    OLD_URL=$(echo $line | awk '{print $1}')
    EXPECTED_URL=$(echo $line | awk '{print $2}')

    # Follow redirects en get final URL
    ACTUAL_URL=$(curl -Ls -o /dev/null -w %{url_effective} "$OLD_URL")

    if [ "$ACTUAL_URL" = "$EXPECTED_URL" ]; then
        echo "✅ PASS: $OLD_URL → $ACTUAL_URL"
    else
        echo "❌ FAIL: $OLD_URL expected $EXPECTED_URL but got $ACTUAL_URL"
    fi
done < "$URLS_FILE"
```

**Usage**:

```
# Maak redirects.txt met format:
# https://old-site.com/page1 https://new-site.com/page1
# https://old-site.com/page2 https://new-site.com/page2

chmod +x test-redirects.sh
./test-redirects.sh
```

### Performance monitoring

**TTFBKeurigOnline zegt [TTFB](https://www.keurigonline.nl/begrippenlijst/ttfb)TTFB (Time to First Byte) meet de tijd tussen een HTTP-verzoek en de eerste byte van het serverantwoord. (Time To First Byte) impact**:

- Elke redirect adds 50-200ms latency
- Redirect chain A→B→C = 100-400ms extra
- Mobile networks = higher latency per redirect

**Monitoring tools**:

- **[WebPageTest.org](https://www.webpagetest.org/)**: View Waterfall voor visuele timing
- **[Google PageSpeed Insights](https://pagespeed.web.dev/)**: Identifies redirect chains
- **New Relic / Datadog**: Monitor redirect response times

## Modern web context

Het web is geëvolueerd met HTTP/2, SPAs en Serverless waarbij deze technologieën veranderen hoe we over redirects denken.

### HTTP/2 & HTTP/3 implications

**Verschillen met HTTP/1.1**:

- **[HTTP/1.1](https://httpwg.org/specs/rfc7231.html)**: Sequential requests, redirect = volledige roundtrip delay
- **[HTTP/2](https://httpwg.org/specs/rfc7540.html)**: Multiplexing (parallel requests), maar redirects add nog steeds latency
- **[HTTP/3 (QUIC)](https://www.rfc-editor.org/rfc/rfc9114.html)**: Lagere latency, snellere connection setup, maar redirects blijven roundtrips

**Key insight:** Ook met HTTPKeurigOnline zegt [HTTP](https://www.keurigonline.nl/begrippenlijst/http)HTTP (HyperText Transfer Protocol) is het protocol dat de communicatie tussen webclients en servers mogelijk maakt. /2 en HTTP/3 blijven redirect chains slecht voor performance waarbij connection reuse de redirect roundtrip niet elimineert (bron: [web.dev performance best practices](https://web.dev/articles/redirects)).

**Best practice:** Minimaliseer redirects ongeacht HTTP protocol versie.

### Single Page Applications (SPAs)

SPAs zoals [React](https://react.dev/), [Vue](https://vuejs.org/) en [Angular](https://angular.dev/) gebruiken client-side routing waarbij je dan nog server-side redirects nodig hebt.

| Scenario | Solution |
|---|---|
| Navigatie tussen pages binnen app | ❌ GEEN redirect - use [React Router](https://reactrouter.com/) / [Vue Router](https://router.vuejs.org/) |
| Externe URLs | ✅ Server-side redirect of window.location |
| Oude domain → nieuwe domain | ✅ Server-side redirect (.htaccess, Nginx) |
| Marketing campaign URLs | ✅ Server-side redirect (voor tracking) |
| Oude pre-SPA URLs | ✅ Server-side redirect naar SPA route |

**[React Router](https://reactrouter.com/) voorbeeld (client-side navigation)**:

```
import { Navigate } from 'react-router-dom';

// ❌ FOUT - server-side redirect niet nodig binnen SPA
// ✅ CORRECT - client-side navigation
function OldPage() {
return <Navigate to="/nieuwe-pagina" replace />;
}
```

**Wanneer server-side redirects WEL nodig in SPAs**:

- Legacy URLs van pre-SPA website
- Cross-domain redirects
- SEO (Googlebot volgt server-side redirects betrouwbaarder)
- Marketing URLs met UTM parameters

### Serverless & edge redirects

Moderne hosting platforms bieden edge redirects. Uitgevoerd op CDNKeurigOnline zegt [CDN](https://www.keurigonline.nl/begrippenlijst/cdn)Een CDN (Content Delivery Network) is een wereldwijd netwerk van servers dat content sneller bij gebruikers aflevert. nodes wereldwijd.

#### Vercel Edge Middleware

[Vercel Edge Middleware](https://vercel.com/docs/edge-network/middleware) draait op het Vercel edge network. Wereldwijd.

```
// middleware.ts
import { NextResponse } from 'next/server';

export function middleware(request) {
// Edge redirect - runs globally on Vercel edge network
const url = request.nextUrl.clone();

if (url.pathname === '/oude-pagina') {
    url.pathname = '/nieuwe-pagina';
    return NextResponse.redirect(url, 301);
}
}
```

#### Netlify \_redirects file

[Netlify redirects](https://docs.netlify.com/routing/redirects/) worden geconfigureerd. Via een simpel text bestand.

```
# netlify/_redirects
/oude-pagina /nieuwe-pagina 301
/oude/* /nieuwe/:splat 301

# Domain redirect
https://oud-domein.nl/* https://nieuw-domein.nl/:splat 301!
```

#### Cloudflare Workers

[Cloudflare Workers](https://developers.cloudflare.com/workers/) laten toe om redirects te implementeren. Op het CloudflareKeurigOnline zegt [Cloudflare](https://www.keurigonline.nl/begrippenlijst/cloudflare)Cloudflare is een Amerikaans bedrijf dat als reverse proxy vóór websites staat en DNS, een CDN en beveiliging levert. edge network.

```
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});

async function handleRequest(request) {
const url = new URL(request.url);

// Redirect logic
if (url.pathname === '/oude-pagina') {
    return Response.redirect('https://site.nl/nieuwe-pagina', 301);
}

// Pass through
return fetch(request);
}
```

**Voordelen van edge redirects**:

- ⚡ Ultra-low latency (dichtstbijzijnde CDN node)
- 📈 Infinite scalability (geen origin server load)
- 💰 Cost effective (edge compute is goedkoop)
- 🌍 Global performance (overal ter wereld snel)

### Progressive Web Apps (PWAs)

Service Workers kunnen redirects afhandelen. Maar met caveats.

**Service Worker redirect voorbeeld**:

```
// service-worker.js
self.addEventListener('fetch', event => {
const url = new URL(event.request.url);

if (url.pathname === '/oude-pagina') {
    event.respondWith(
      Response.redirect('/nieuwe-pagina', 301)
    );
}
});
```

⚠️ **Caveat:** Service Workers zijn client-side dus SEO impact is zoals JavaScript redirects waarbij je ze alleen voor applicatie logic gebruikt en niet voor SEO pages.

## Veelgemaakte fouten & oplossingen

Zelfs ervaren developers maken deze redirect mistakes waarbij hier staat hoe je ze herkent en oplost.

### Redirect chains

**Het probleem**:

```
Bezoeker request: example.com/oude-pagina
→ 301 redirect naar /tussenliggende-pagina
→ 301 redirect naar /nog-een-stap
    → 301 redirect naar /finale-pagina
```

**Impact**:

- ⏱️ Extra latency: 150-600ms (50-200ms per redirect)
- 🤖 Crawl budgetKeurigOnline zegt [Crawl budget](https://www.keurigonline.nl/begrippenlijst/crawl-budget)Crawl budget is het aantal URL's dat een zoekmachine zoals Google op je website kan en wil crawlen. verspilling (Google moet 3+ requests doen)
- ⚠️ Google advice: Maximum 3-5 redirects
- 📱 Mobiele gebruikers merken significante vertraging

**Detectie**:

- Screaming Frog: Filter "Redirect Chains"
- HTTPStatus.io: Shows volledige chain visueel
- cURL: `curl -L -v URL` toont alle hops

**Oplossing**:

```
# ❌ FOUT - chain
Redirect 301 /a /b
Redirect 301 /b /c
Redirect 301 /c /d

# ✅ CORRECT - directe redirects
Redirect 301 /a /d
Redirect 301 /b /d
Redirect 301 /c /d
```

### Redirect loops

**Het probleem**:

```
/pagina-a → redirects to /pagina-b
/pagina-b → redirects to /pagina-a
(infinite loop!)
```

**Browser error**. "Too many redirects". Of `ERR_TOO_MANY_REDIRECTS`.

**Common cause: conflicting .htaccess rules**:

```
# ❌ FOUT - creates loop
# Rule 1: www toevoegen
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# Rule 2: www verwijderen (CONFLICT!)
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
```

**Oplossing - combine conditions**:

```
# ✅ CORRECT - kies één richting
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
```

**Detectie**:

- Browser toont direct error message
- Screaming Frog: "Redirect Loop" status
- cURL hangs indefinitely (gebruik Ctrl+C)

### Redirects naar 404 pagina

**Het probleem**. Redirect wijst naar page die niet meer bestaat.

**Impact**:

- Link equity gaat naar 404 = volledig verloren
- Slechte user experience (2 hops om bij error te komen)
- Google indexeert uiteindelijk als 404

**Detectie met Screaming Frog**:

1. Crawl site met "Follow Redirects" enabled
2. Filter op "3xx Redirects"
3. Check "Redirect URI" kolom
4. Cross-reference met "404" responses

**Detectie met bash script**:

```
#!/bin/bash
while read url; do
STATUS=$(curl -L -o /dev/null -w '%{http_code}' "$url")
if [ "$STATUS" = "404" ]; then
    echo "❌ $url ends in 404"
fi
done < urls.txt
```

**Oplossing**:

1. Find valid replacement page
2. Update redirect naar valid URL
3. If geen relevant page: Remove redirect, return 404 of 410 direct

### Cache issues

**Het probleem:** Browser cached oude 301 redirect waardoor nieuwe redirect niet wordt gezien.

**Symptomen**:

- Test toont nieuwe redirect werkt
- Gebruikers zien nog steeds oude redirect
- Incognito mode werkt wel

**Oplossing voor gebruikers**:

**1. Clear browser cache**:

- Chrome: Ctrl+Shift+Del → Cached images and files
- Firefox: Ctrl+Shift+Del → Cache
- Safari: Develop → Empty Caches

**2. Test in Incognito/Private mode** (geen cache):

- Chrome: Ctrl+Shift+N
- Firefox: Ctrl+Shift+P

**3. Flush DNSKeurigOnline zegt [DNS](https://www.keurigonline.nl/begrippenlijst/dns)Het Domain Name System (DNS) vertaalt domeinnamen naar IP-adressen, zodat websites makkelijk bereikbaar zijn. cache**:

```
# Windows
ipconfig /flushdns

# macOS
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# Linux
sudo systemd-resolve --flush-caches
```

**Preventie voor developers**:

- ✅ Test met 302 eerst (niet cached), dan switch naar 301
- ✅ Communiceer cache clearing instructies naar gebruikers
- ✅ Wacht 24-48 uur na 301 voor volledige cache expiration

### GEO redirects blocking Googlebot

**Het probleem:** Internationale sites redirecten bezoekers naar country-specific versies waarbij Google crawlt vanuit VS, wordt ge-redirect en de verkeerde versie indexeert.

**Symptomen**:

- Nederlandse pagina's niet geïndexeerd
- Alleen US versie in Google
- Coverage errors in GSC

**Oplossing**:

- ✅ Never block USA IP ranges (Googlebot location)
- ✅ Use `hreflang` tags instead of GEO redirects (preferred)
- ✅ If GEO redirect essential: Whitelist Googlebot user agent

**Hreflang implementation (preferred)**:

```
<link rel="alternate" hreflang="nl" href="https://site.nl/pagina" />
<link rel="alternate" hreflang="en" href="https://site.com/page" />
<link rel="alternate" hreflang="de" href="https://site.de/seite" />
```

## Praktische use cases

Concrete scenarios. Met complete implementaties.

### Domain migratie: oud-domein.nl → nieuw-domein.nl

**Complete workflow voor domain migratie**:

**Stap 1: Redirect setup (.htaccessKeurigOnline zegt [htaccess](https://www.keurigonline.nl/begrippenlijst/htaccess)Een .htaccess bestand is een configuratiebestand voor Apache webservers waarmee je per directory instellingen kunt wijzigen zonder toegang tot de hoofdconfiguratie. op oud domein)**:

```
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^oud-domein\.nl$ [OR]
RewriteCond %{HTTP_HOST} ^www\.oud-domein\.nl$
RewriteRule ^(.*)$ https://nieuw-domein.nl/$1 [R=301,L]
</IfModule>
```

:

- Behoud oud-domein.nl hosting voor minimum **1 jaar**
- Point naar server met redirect config
- Monitor renewal dates (niet laten expiren!)

**Google Search Console setup na domain migratie**

1. **Add properties** — Voeg beide domeinen toe: oud-domein.nl EN nieuw-domein.nl
2. **Submit sitemap** — Upload sitemap voor nieuw-domein.nl
3. **Monitor indexering** — Volg de shift over 3-6 maanden
4. **Check errors** — Controleer Coverage rapport voor redirect errors

**Stap 4: Update backlinks (optioneel maar aanbevolen)**:

- Identificeer high-value backlinks (GSC → Links rapport)
- Contact site owners
- Vraag om update naar nieuw domein
- Focus op high-authority sites eerst

**Timeline verwachting**:

- Week 1-2: Eerste nieuwe URLs in Google
- Maand 1-3: 50-70% van traffic naar nieuwe domain
- Maand 3-6: 90%+ van traffic verschoven
- Maand 6-12: Oude domain volledig vervangen in rankings

### HTTPS migratie: http:// → https://

**.htaccess redirect**:

```
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
```

**Complete HTTPS migration checklist**:

- ✅ SSLKeurigOnline zegt [SSL](https://www.keurigonline.nl/begrippenlijst/ssl)SSL (Secure Sockets Layer) is een beveiligingsprotocol voor versleutelde internetverbindingen. certificaat geïnstalleerd en actief
- ✅ Test https:// versie laadt correct
- ✅ Update internal links naar https://
- ✅ Update sitemapKeurigOnline zegt [Sitemap](https://www.keurigonline.nl/begrippenlijst/sitemap)Een sitemap is een XML-bestand met de URL's van je website, zodat zoekmachines je pagina's makkelijker vinden. URLs naar httpsKeurigOnline zegt [HTTPS](https://www.keurigonline.nl/begrippenlijst/https)HTTPS (HyperText Transfer Protocol Secure) is HTTP over een versleutelde TLS-verbinding tussen browser en webserver. ://
- ✅ Update Google Search Console property (add https:// versie)
- ✅ Update canonical tags naar https://
- ✅ Check mixed content warnings (DevTools Console)
- ✅ Update CDNKeurigOnline zegt [CDN](https://www.keurigonline.nl/begrippenlijst/cdn)Een CDN (Content Delivery Network) is een wereldwijd netwerk van servers dat content sneller bij gebruikers aflevert. /external resources naar https://
- ✅ Update social media links
- ✅ Update email signatures, marketing materials

### URL restructure: flat → hierarchical

**Scenario**. Van `/product-name` naar `/category/subcategory/product-name`.

**Approach 1: Individual redirects (small sites)**:

```
Redirect 301 /product-a /electronics/phones/product-a
Redirect 301 /product-b /electronics/laptops/product-b
Redirect 301 /product-c /clothing/shirts/product-c
```

**Approach 2: DatabaseKeurigOnline zegt [Database](https://www.keurigonline.nl/begrippenlijst/database)Een database is een georganiseerde verzameling gegevens die elektronisch wordt opgeslagen en beheerd. -driven (large sites)**:

```
<?php
// redirect-mapper.php
$Db = App::get('Db');

// Query redirect mapping from database
$redirects = $Db->query("SELECT old_url, new_url FROM redirects WHERE active = 1");

$current_url = $_SERVER['REQUEST_URI'];
foreach ($redirects as $redirect) {
    if ($redirect['old_url'] === $current_url) {
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: " . $redirect['new_url']);
        exit();
    }
}
?>
```

### Content consolidatie

**Scenario**. 3 oude product reviews samenvoegen. Naar 1 comprehensive guide.

**Setup**:

```
# Alle oude reviews → nieuwe comprehensive guide
Redirect 301 /review-product-a /complete-product-guide
Redirect 301 /review-product-b /complete-product-guide
Redirect 301 /comparison-a-vs-b /complete-product-guide
```

**SEO considerations**:

- ✅ Nieuwe pagina moet **alle** content van oude pagina's coverage hebben
- ✅ Nieuwe pagina moet comprehensive zijn (2,500+ woorden)
- ✅ Link equity van alle 3 oude pages flows naar nieuwe page
- ⚠️ Check GSC: Oude URLs moeten uit index verdwijnen binnen 1-2 maanden

### Seasonal campaign redirects

**Scenario:** Black Friday promo page met tijdelijk redirect.

**Setup (302 temporary)**:

```
# Tijdens Black Friday (november)
Redirect 302 /bestsellers /black-friday-deals

# Na Black Friday: Verwijder redirect
# /bestsellers works normally again
```

**Alternative: Date-based PHP redirect**:

```
<?php
// Tijdelijke redirect gebaseerd op datum
$start_date = strtotime('2024-11-25');
$end_date = strtotime('2024-12-01');
$now = time();

if ($now >= $start_date && $now <= $end_date) {
    header("HTTP/1.1 302 Found");
    header("Location: /black-friday-deals");
    exit();
}
// Normale pagina laadt na campaign
?>
```

## FAQ

### Wat is het verschil tussen een 301 en 302 redirect?

**301 redirect (permanent):** De oude URL bestaat niet meer. SEO waarde (90-99% link equity) wordt overgedragen naar de nieuwe URL.

**302 redirect (tijdelijk):** De oude URL komt terug. SEO waarde blijft op de oude URL.

- **Gebruik 301:** domain migratie, permanente URL wijzigingen, verwijderde pagina's, HTTPS migratie
- **Gebruik 302:** tijdelijke promoties, A/B testing, maintenance pages, seasonal campaigns

### Verliezen redirects SEO waarde?

**Nee,** niet meer sinds 2016. De "15% dampingsfactor" myth werd ontkracht door Gary Illyes van Google.

Bij 301/308 redirects wordt 90-99% link equity overgedragen. Het kleine verlies (1-10%) is inherent aan alle links, niet specifiek aan redirects.

**Uitzondering:** Irrelevante redirects (alle oude producten → homepage) worden als "soft 404" behandeld en verliezen wél link equity.

### Hoelang moet ik een redirect laten staan?

**Permanent laten staan is het veiligst.**

Hoewel Google zegt dat 1 jaar voldoende is: oude backlinks blijven jaren bestaan, redirects hebben minimale performance impact en voorkomen broken links.

**Uitzondering:** Bij domain migratie waar het oude domein expires kunnen redirects na 2-3 jaar verwijderd worden.

### Kan ik redirects instellen zonder technische kennis?

**Ja!** Beide methodes zijn binnen 5 minuten opgezet zonder code-kennis:

- **WordPressKeurigOnline zegt [WordPress](https://www.keurigonline.nl/begrippenlijst/wordpress)WordPress is een open-source contentmanagementsysteem (CMS) geschreven in PHP, waarmee je eenvoudig websites en blogs kunt bouwen en beheren. :** Installeer Redirection pluginKeurigOnline zegt [Plugin](https://www.keurigonline.nl/begrippenlijst/plugin)Een plugin is een uitbreiding die je aan software zoals WordPress toevoegt om er een nieuwe functie bij te krijgen. → Extra → Redirection → voeg redirect toe
- **cPanel:** Log in → Domeinen → Redirects → vul formulier in → klik "Add"

### Hoe test ik of mijn redirect werkt?

Test altijd in incognito mode om browser cacheKeurigOnline zegt [Cache](https://www.keurigonline.nl/begrippenlijst/cache)Een cache is een tijdelijke opslaglaag die veelgebruikte gegevens bewaart voor snellere toegang en betere prestaties. te vermijden:

1. **Browser test:** Open incognito venster, bezoek oude URL
2. **Online tools:** HTTPStatus.io of Redirect-checker.org voor chain en status code
3. **DevTools:** F12 → Network tab → bezoek URL → check status code 301/302 + Location header

### Wat is een redirect chain en waarom is het slecht?

Een **redirect chain** is meerdere redirects achter elkaar (A → B → C → D).

**Problemen:**

- Elke redirect voegt 50-200ms latency toe
- Crawl budget verspild (Google doet 3+ HTTP requests)
- Mobiele gebruikers ervaren significante vertraging

**Oplossing:** Maak directe redirects (A→C in plaats van A→B→C). Detecteer met Screaming Frog, HTTPStatus.io of `curl -L -v URL`.

### Redirect of canonical tag - wat moet ik gebruiken?

- **Redirect (301):** Oude pagina verdwijnt, gebruikers navigeren automatisch. Gebruik voor domain migratie, permanente URL wijzigingen, HTTPSKeurigOnline zegt [HTTPS](https://www.keurigonline.nl/begrippenlijst/https)HTTPS (HyperText Transfer Protocol Secure) is HTTP over een versleutelde TLS-verbinding tussen browser en webserver. migration.
- **Canonical tagKeurigOnline zegt [Canonical tag](https://www.keurigonline.nl/begrippenlijst/canonical-tag)Een canonical tag (rel="canonical") is een HTML-element dat aangeeft welke URL de voorkeursversie van een pagina is. :** Beide pagina's blijven online, PageRank wordt geconsolideerd. Gebruik voor filters, pagination, duplicate content.
- **Noindex:** Pagina blijft online maar uit Google index.

### Kan ik JavaScript redirects gebruiken voor SEO?

**Niet preferred maar mogelijk.**

Server-side redirects (.htaccess, PHP, Nginx) zijn altijd beter: gegarandeerd door Google gezien, sneller, werken zonder JavaScript, 100% link equity overdracht.

**JavaScriptKeurigOnline zegt [JavaScript](https://www.keurigonline.nl/begrippenlijst/javascript)JavaScript is een programmeertaal die wordt gebruikt om interactieve en dynamische websites te maken. alleen acceptabel bij:** static hosting zonder server toegang, legacy systemen, niet-SEO critical pages. Let op: Google kan JS redirects missen bij slow connections.

### Wat is het verschil tussen 307 en 302 redirect?

Beide zijn **tijdelijk** maar verschillen in HTTP method handling:

- **302 Found:** HTTP method kan wijzigen (POST → GET). Oudere HTTP/1.0 standaard.
- **307 Temporary:** HTTP method blijft gegarandeerd hetzelfde. Moderne HTTP/1.1 standaard.

**Gebruik 307** voor form submissions, APIKeurigOnline zegt [API](https://www.keurigonline.nl/begrippenlijst/api)Een API (Application Programming Interface) is een set regels en protocollen waarmee softwareapplicaties met elkaar kunnen communiceren en gegevens uitwisselen. endpoints, REST APIs. **Gebruik 302** voor simpele tijdelijke redirects, promoties, A/B testing.

### Hoe voorkom ik redirect loops?

**Preventie:**

1. Test direct na setup met browser en `curl -L -v URL`
2. Documenteer redirects in spreadsheet (oude → nieuwe URL)
3. Combineer .htaccess conditions i.p.v. separate rules
4. Maandelijks audit met Screaming Frog (filter "Redirect Loop")

**Loop oplossen:** Check .htaccess voor conflicting RewriteRules, gebruik verbose cURL om chain te zien, verwijder conflicterende regel.

## Conclusie

HTTP redirects zijn een **essentieel onderdeel** van professioneel website beheer waarbij of je nu een domain migreert, URL structuur optimaliseert of oude pagina's verwijdert, correct ingestelde redirects je SEO waarde behouden en zorgen voor optimale gebruikerservaring.

**Key takeaways uit deze complete gids**:

- ✅ **301 redirects** voor permanente wijzigingen - behoud 90-99% link equity
- ✅ **302/307 redirects** voor tijdelijke situaties - SEO waarde blijft bij originele URL
- ✅ **303 redirects** voor POST-Redirect-GET pattern bij form submissions
- ✅ **308 redirects** voor permanente wijzigingen waar HTTP method preservation kritiek is
- ✅ **Server-side implementation preferred** (.htaccessKeurigOnline zegt [htaccess](https://www.keurigonline.nl/begrippenlijst/htaccess)Een .htaccess bestand is een configuratiebestand voor Apache webservers waarmee je per directory instellingen kunt wijzigen zonder toegang tot de hoofdconfiguratie. , PHPKeurigOnline zegt [PHP](https://www.keurigonline.nl/begrippenlijst/php)PHP (Hypertext Preprocessor) is een populaire open-source scripttaal die speciaal is ontworpen voor webontwikkeling en server-side programmering. , Nginx) boven client-side
- ✅ **Vermijd redirect chains** - maak altijd directe redirects (A→C, niet A→B→C)
- ✅ **Test grondig** met browser DevTools, cURL, en online tools
- ✅ **Monitor continu** met Google Search Console en Screaming Frog
- ✅ **Security first** - valideer redirect destinations, gebruik whitelists
- ✅ **Modern context** - Next.js, SPAs, HTTP/2, edge computing patterns

**Modern web development context:** Met de opkomst van Next.js, React, Vue, SPAs en edge computing zijn redirects complexer geworden. Begrijp wanneer je server-side redirects nodig hebt versus client-side routing en gebruik edge redirects (Vercel, Netlify, CloudflareKeurigOnline zegt [Cloudflare](https://www.keurigonline.nl/begrippenlijst/cloudflare)Cloudflare is een Amerikaans bedrijf dat als reverse proxy vóór websites staat en DNS, een CDN en beveiliging levert. ) voor global performance.

**SEO best practices samengevat**:

- Redirect naar **relevante** pagina's (voorkom soft 404s)
- Behoud redirects **permanent** (ondanks Google's "1 jaar" guidance)
- Oude backlinks blijven jaren bestaan - redirects beschermen je investering
- Monitor GSC Coverage rapport voor 3-6 maanden na grote migraties

**Volgende stappen**:

1. Kies de juiste implementatie methode voor jouw platform
2. Implementeer redirects met code voorbeelden uit deze gids
3. Test grondig met meerdere tools
4. Monitor met Google Search ConsoleKeurigOnline zegt [Search Console](https://www.keurigonline.nl/begrippenlijst/search-console)Search Console is een gratis dienst van Google die laat zien hoe je website presteert in de zoekresultaten van Google.
5. Audit maandelijks voor chains, loops, en 404s

Met de kennis uit deze complete gids kun je **professionele redirects implementeren** die je SEO rankings beschermen, gebruikerservaring optimaliseren en toekomstbestendig zijn voor moderne web architecturen.

Blijf redirects monitoren, test regelmatig en behandel ze als permanente infrastructuur van je website en niet als tijdelijke oplossing.

---

## Bronnen en referenties

Dit artikel is gebaseerd op officiële documentatie en authoritative sources:

1. **MDN Web Docs** - [HTTP 301 Moved Permanently](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/301): Officiële documentatie over HTTP status codes en redirect gedrag.
2. **Google Search Central (2024)** - [301 Redirects](https://developers.google.com/search/docs/crawling-indexing/301-redirects): Google's officiële guidance over redirects en SEO impact.
3. **Google Search Central** - [Crawl Budget Management](https://developers.google.com/search/docs/crawling-indexing/large-site-managing-crawl-budget): Hoe redirects crawl budgetKeurigOnline zegt [Crawl budget](https://www.keurigonline.nl/begrippenlijst/crawl-budget)Crawl budget is het aantal URL's dat een zoekmachine zoals Google op je website kan en wil crawlen. beïnvloeden.
4. **Moz SEOKeurigOnline zegt [SEO](https://www.keurigonline.nl/begrippenlijst/seo)SEO (search engine optimization) is het beter vindbaar maken van je website in de onbetaalde zoekresultaten. Guide** - [Redirection](https://moz.com/learn/seo/redirection): Link equity overdracht bij redirects (90-99%).
5. **Apache Software Foundation** - [mod\_rewrite Documentation](https://httpd.apache.org/docs/2.4/rewrite/remapping.html): Officiële ApacheKeurigOnline zegt [Apache](https://www.keurigonline.nl/begrippenlijst/apache)Apache HTTP Server is een open source webserver ontwikkeld door de Apache Software Foundation. redirect configuratie.
6. **Nginx Documentation** - [ngx\_http\_rewrite\_module](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html): NginxKeurigOnline zegt [Nginx](https://www.keurigonline.nl/begrippenlijst/nginx)Nginx is een open-source webserver, reverse proxy en load balancer die veel gebruikt wordt voor hoogperformante websites. rewrite en redirect syntax.
7. **OWASP Foundation** - [Unvalidated Redirects Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html): Security best practices voor redirects.
8. **MITRE CWE** - [CWE-601: URL Redirection to Untrusted Site](https://cwe.mitre.org/data/definitions/601.html): Open redirect vulnerability classificatie.
9. **Next.js Documentation** - [Redirecting](https://nextjs.org/docs/app/building-your-application/routing/redirecting): Modern framework redirect implementatie.
10. **IETF RFC 7231** - [HTTP/1.1 Semantics and Content](https://httpwg.org/specs/rfc7231.html): Officiële HTTP/1.1 specificatie.
11. **IETF RFC 7540** - [HTTP/2](https://httpwg.org/specs/rfc7540.html): HTTP/2 protocol specificatie.
12. **IETF RFC 9114** - [HTTP/3](https://www.rfc-editor.org/rfc/rfc9114.html): HTTP/3 (QUICKeurigOnline zegt [QUIC](https://www.keurigonline.nl/begrippenlijst/quic)QUIC is een versleuteld transportprotocol over UDP dat de basis vormt van HTTP/3 en verbindingen sneller opzet dan TCP. ) protocol specificatie.
13. **Google Web.dev** - [Avoid multiple page redirects](https://web.dev/articles/redirects): Performance impact van redirect chains.
14. **Search Engine Land (2016)** - [Google: No PageRank Dilution](https://searchengineland.com/google-no-pagerank-dilution-using-301-302-30x-redirects-anymore-254608): Gary Illyes bevestigt geen PageRank verlies bij redirects.

**Let op:** HTTPKeurigOnline zegt [HTTP](https://www.keurigonline.nl/begrippenlijst/http)HTTP (HyperText Transfer Protocol) is het protocol dat de communicatie tussen webclients en servers mogelijk maakt. redirectKeurigOnline zegt [Redirect](https://www.keurigonline.nl/begrippenlijst/redirect)Een redirect stuurt bezoekers automatisch door naar een andere webpagina. gedrag kan variëren per browser en server versie. Implementeer en test altijd in je eigen omgeving. Links gecontroleerd op december 2025.

Deel dit artikel

Link kopiëren [](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.keurigonline.nl%2Fblog%2Fhttp-redirects-gids) [](https://x.com/intent/post?text=HTTP+redirects%3A+complete+gids+voor+301%2C+302%2C+307%2C+303+en+308+redirects+instellen&url=https%3A%2F%2Fwww.keurigonline.nl%2Fblog%2Fhttp-redirects-gids) [](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.keurigonline.nl%2Fblog%2Fhttp-redirects-gids) [](https://wa.me/?text=https%3A%2F%2Fwww.keurigonline.nl%2Fblog%2Fhttp-redirects-gids) [](mailto:?subject=HTTP%20redirects%3A%20complete%20gids%20voor%20301%2C%20302%2C%20307%2C%20303%20en%20308%20redirects%20instellen&body=https%3A%2F%2Fwww.keurigonline.nl%2Fblog%2Fhttp-redirects-gids)

- Hosting 29 Oct

    ### Hosting webshop: wat heeft een kleine webshop écht nodig?

     Hosting voor je webshop kiezen? Zo bepaal je of shared hosting volstaat, welke eisen WooCommerce stelt (PHP, geheugen) en wanneer een VPS loont.

     Pablo Cleij
- Hosting 29 Oct

    ### Groene hosting in Nederland: zo check je de claim zelf

     Welke hostingproviders draaien echt op groene stroom? We toetsen vijf claims die AI-antwoorden noemen en geven je 5 vragen om groene hosting zelf te checken.

     Pablo Cleij
- Hosting 2 Jul

    ### WordPress-database optimaliseren: tot 80% kleiner in 6 stappen

     Database vol of site traag? In 6 stappen maak je je WordPress-database tot 80% kleiner — inclusief noodplan als je hostinglimiet al bereikt is.

     Pablo Cleij
