Naar de inhoud springen
Gratis tool

HTTP-statuscodes: lijst en betekenis

HTTP-statuscodes in een doorzoekbare lijst: voer 404, 403, 500, 502 of ‘omleiding’ in en lees wat de HTTP-code betekent, wat de oorzaak is en hoe je het probleem oplost. 70 codes van 100 tot 526, met kopieerbare nginx- en Apache-voorbeelden, de Cloudflare-fouten 520 tot en met 526 en de nginx-codes 444 en 499. Gratis en zonder registratie: het zoeken gebeurt volledig in je browser.

Gebouwd door Dimitri Heissler

Beheer je zelf een website? Zet hem op snelle webhosting.

Er wordt gezocht in nummer, naam, uitleg, oorzaken en configuratievoorbeelden, bijvoorbeeld op ‘timeout’ of ‘client_max_body_size’.

Veelgezocht:

70 van 70 statuscodes

Betekenis

De server heeft de headers van het verzoek ontvangen en heeft geen bezwaar. De client mag de body versturen. Dit hoort bij de header ‘Expect: 100-continue’, waarmee een client vóór een grote upload vraagt of de server die accepteert.

Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server schakelt op verzoek van de client over naar een ander protocol, bijvoorbeeld van HTTP naar WebSocket. De client heeft hiervoor de header ‘Upgrade’ verstuurd.

Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server verwerkt het verzoek nog en heeft het niet afgerond. De code komt uit WebDAV en voorkomt een timeout bij langdurige bewerkingen. Deze geldt als verouderd en komt nauwelijks nog voor.

Gedefinieerd in RFC 2518

Betekenis

De server stuurt vooraf aanwijzingen, bijvoorbeeld ‘Link’-headers voor stylesheets of scripts, terwijl hij het eigenlijke antwoord nog voorbereidt. De browser kan deze bestanden alvast laden. Dit is een aanwijzing, geen fout.

Gedefinieerd in RFC 8297

Betekenis

Het verzoek is geslaagd. Bij GET bevat het antwoord de opgevraagde resource, bij POST het resultaat van de actie. Dit is de normale respons van elke werkende website.

Voor zoekmachineoptimalisatie: Een 200 betekent alleen dat de server antwoordt, niet dat de inhoud klopt. Een foutpagina die met 200 wordt geleverd, heet een ‘Soft 404’ en brengt zoekmachines in verwarring.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Het verzoek is geslaagd en heeft een nieuwe resource aangemaakt. Dit komt vaak voor bij POST-verzoeken aan een API. De header ‘Location’ bevat het adres van de nieuwe resource.

Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server heeft het verzoek geaccepteerd, maar nog niet volledig verwerkt. Het resultaat volgt later, bijvoorbeeld via een statuscontrole of een webhook. Dit is gebruikelijk bij achtergrondtaken.

Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Het verzoek is geslaagd, maar de gegevens komen niet rechtstreeks van de oorspronkelijke server. Ze komen van een proxy die ze mogelijk heeft gewijzigd. Dit komt zelden voor.

Gedefinieerd in RFC 9110

Betekenis

Het verzoek is geslaagd, maar het antwoord bevat bewust geen body. Dit is gebruikelijk bij DELETE of PUT en bij CORS-preflightverzoeken (OPTIONS). Wie het antwoord als JSON wil lezen, moet rekening houden met de lege body.

Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Het verzoek is geslaagd. De client moet de weergave resetten, bijvoorbeeld door een formulier leeg te maken. Het antwoord bevat geen body. Dit wordt zelden gebruikt.

Gedefinieerd in RFC 9110

Betekenis

De server levert alleen het opgevraagde deel van een bestand, omdat de client een ‘Range’-header heeft verstuurd. Dit wordt gebruikt voor videostreaming, hervatte downloads en grote bestanden.

Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Het antwoord bevat meerdere statuscodes voor meerdere deelbewerkingen, in XML. Dit komt uit WebDAV en wordt gebruikt bij de synchronisatie van agenda's, contacten en bestanden.

Gedefinieerd in RFC 4918

Betekenis

De leden van een WebDAV-koppeling zijn al in een eerder deel van hetzelfde antwoord vermeld en worden niet opnieuw opgesomd. Zeer zeldzaam.

Gedefinieerd in RFC 5842

Betekenis

De server heeft het verzoek beantwoord met Delta Encoding: het antwoord is het resultaat van een of meer wijzigingen aan de huidige bron. Wordt in de praktijk niet gebruikt.

Gedefinieerd in RFC 3229

Betekenis

Er zijn meerdere mogelijke antwoorden op het verzoek, bijvoorbeeld hetzelfde bestand in verschillende formaten of talen. De client of gebruiker moet er een kiezen. Wordt in de praktijk nauwelijks gebruikt.

Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Permanente omleiding: de bron heeft een nieuw adres, dat in de header 'Location' staat. Browsers en zoekmachines moeten voortaan alleen de nieuwe URL gebruiken.

Veelvoorkomende oorzaken

  • Domein- of URL-verhuizing, bijvoorbeeld van http naar https of van www naar het hoofddomein
  • Een pagina is hernoemd of verplaatst
  • Een omleidingsregel in nginx, Apache of het CMS wordt toegepast

Zo los je het op

  • Link rechtstreeks naar de doel-URL, zodat een omleiding niet nodig is.
  • Verkort doorverwijsketens (A, B, C) tot één stap.
  • Controleer bij een lus (ERR_TOO_MANY_REDIRECTS) of de regels voor http/https en www elkaar tegenspreken. Vaak zijn de instellingen van de server en het CMS tegenstrijdig.
  • Browsers bewaren 301-omleidingen erg lang. Test wijzigingen in een incognitovenster of met curl -I.

Configuratie en opdrachten (voorbeelden)

nginx
return 301 https://example.com$request_uri;
Apache
Redirect 301 /alte-seite https://example.com/neue-seite
Voor zoekmachineoptimalisatie: Een 301 geeft de rankingsignalen van de oude URL door aan de nieuwe. Gebruik deze bij elke permanente verhuizing en vermijd omleidingsketens.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Tijdelijke omleiding: de resource is tijdelijk bereikbaar op een ander adres. De client moet voor dit verzoek de header ‘Location’ volgen, maar daarna de oorspronkelijke URL blijven gebruiken. Sommige clients veranderen daarbij een POST in een GET.

Veelvoorkomende oorzaken

  • Tijdelijke omleiding, bijvoorbeeld voor een campagne of onderhoud
  • Loginomleiding naar een aanmeldpagina
  • Omleiding op basis van taal of land
  • Ten onrechte ingesteld, hoewel de verhuizing permanent is

Zo los je het op

  • Geef permanente verhuizingen aan met 301 of 308, anders blijven zoekmachines de oude URL gebruiken.
  • Wil je de methode behouden, gebruik dan 307 (tijdelijk) of 308 (permanent).

Configuratie en opdrachten (voorbeelden)

nginx
return 302 https://example.com/sommer-angebot;
Apache
Redirect 302 /angebot https://example.com/sommer-angebot
Voor zoekmachineoptimalisatie: Bij een 302 blijft de oude URL in de index zolang de omleiding als tijdelijk geldt. Gebruik je die voor een permanente verhuizing, dan verschuiven de rankings slechts langzaam.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Omleiding met GET: de client moet het resultaat via GET op een andere URL ophalen. Gebruikelijk na een POST (Post/Redirect/Get), zodat het formulier bij het vernieuwen van de pagina niet opnieuw wordt verzonden.

Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De bron is sinds het laatste verzoek niet gewijzigd. De server stuurt geen body; de browser gebruikt de kopie uit de cache. De browser heeft daarvoor ‘If-None-Match’ (ETag) of ‘If-Modified-Since’ meegestuurd. Dat bespaart bandbreedte en versnelt de pagina.

Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Tijdelijke omleiding zoals 302, maar de HTTP-methode en de body blijven ongewijzigd bij het volgen van de omleiding: een POST blijft een POST.

Veelvoorkomende oorzaken

  • Chrome toont voor HSTS-omleidingen van http naar https '307 Internal Redirect' in de ontwikkelaarstools, zonder dat de server iets heeft verzonden
  • Een server leidt een API-verzoek tijdelijk om en wil de methode behouden

Zo los je het op

  • Is de omleiding permanent, gebruik dan 308 in plaats van 307.

Configuratie en opdrachten (voorbeelden)

nginx
return 307 https://example.com$request_uri;
Apache
Redirect 307 /alt https://example.com/neu
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Permanente omleiding zoals 301, maar de HTTP-methode en de body blijven ongewijzigd: een POST blijft een POST. Geschikt voor permanente API-verhuizingen en formulieren waarvan de gegevens niet verloren mogen gaan.

Configuratie en opdrachten (voorbeelden)

nginx
return 308 https://example.com$request_uri;
Apache
Redirect 308 /alt https://example.com/neu
Voor zoekmachineoptimalisatie: Voor zoekmachines werkt 308 net als 301 en draagt het de rankings over naar het nieuwe adres.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server begrijpt het verzoek niet omdat het onjuist is opgebouwd: ongeldige syntaxis, beschadigde headers of een te grote cookie. Vanuit het perspectief van de server ligt de fout bij de client.

Veelvoorkomende oorzaken

  • Ongeldige tekens of een verkeerd gecodeerde URL, bijvoorbeeld een spatie of een % zonder twee hexadecimale cijfers
  • Te grote of beschadigde cookies, bij nginx weergegeven als ‘Request Header Or Cookie Too Large’
  • Ongeldige JSON-body of ontbrekende verplichte velden bij een API
  • Onjuiste Host- of Content-Length-headers, vaak door een proxy

Zo los je het op

  • Verwijder de cookies van het domein in je browser en laad de pagina opnieuw.
  • Controleer de URL en codeer speciale tekens, bijvoorbeeld met de URL Encoder.
  • Vergelijk de requestbody met de API-documentatie.
  • Bij te grote headers: vergroot de buffers van de server.

Configuratie en opdrachten (voorbeelden)

nginx
large_client_header_buffers 4 16k;
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Voor dit verzoek is geldige authenticatie vereist. De client is niet aangemeld of de inloggegevens zijn ongeldig. De server stuurt de header ‘WWW-Authenticate’ mee, die de vereiste methode aangeeft. De naam is misleidend: het betekent ‘niet geauthenticeerd’, niet ‘niet bevoegd’ (dat is 403).

Veelvoorkomende oorzaken

  • Ontbrekend of verlopen token, wachtwoord of API-sleutel
  • Onjuiste Authorization-header, bijvoorbeeld ontbrekende ‘Bearer’ vóór het token
  • HTTP Basic-beveiliging (.htpasswd) voor de pagina of directory

Zo los je het op

  • Controleer de inloggegevens en de vervaltijd van het token.
  • Controleer de opmaak van de Authorization-header.
  • Bij Basic Auth: controleer de gebruiker in de .htpasswd en het bestandspad in de configuratie.

Configuratie en opdrachten (voorbeelden)

nginx
auth_basic "Geschützter Bereich";
auth_basic_user_file /etc/nginx/.htpasswd;
Apache
AuthType Basic
AuthName "Geschützter Bereich"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Gereserveerd voor toekomstige betaalsystemen en nooit gestandaardiseerd. Sommige diensten gebruiken het toch, bijvoorbeeld als een abonnement is verlopen of voor een API-quotum moet worden betaald.

Zo los je het op

  • Controleer de factuur- of abonnementsstatus bij de aanbieder.
  • Lees de API-documentatie van de dienst; daarin staat de betekenis vastgelegd.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server begrijpt het verzoek, maar weigert het. Anders dan bij 401 helpt opnieuw inloggen meestal niet: toegang is voor deze identiteit of dit adres niet toegestaan.

Veelvoorkomende oorzaken

  • De bestandsrechten of eigenaar kloppen niet; de webservergebruiker mag het bestand niet lezen
  • In de map ontbreekt een indexdocument en de mapweergave is uitgeschakeld
  • IP-blokkering, firewall- of WAF-regel of geoblokkering
  • Een regel in .htaccess of de nginx-configuratie verbiedt de toegang (deny all, Require all denied)
  • Een beveiligingsmodule zoals ModSecurity of Fail2ban blokkeert het verzoek

Zo los je het op

  • Controleer de rechten: mappen meestal 755, bestanden 644 en een eigenaar die overeenkomt met de webservergebruiker. De CHMOD-calculator rekent de getallen om.
  • Maak een indexbestand aan (index.html, index.php) of stel de index-directive in.
  • Lees het foutenlog van de webserver. Daar staat de precieze oorzaak, bijvoorbeeld ‘directory index of … is forbidden’.
  • Controleer IP-blokkades en WAF-regels.

Configuratie en opdrachten (voorbeelden)

Shell
namei -l /var/www/html/index.html
nginx
index index.html index.php;
Apache
<Directory /var/www/html>
    Require all granted
</Directory>
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server is bereikbaar, maar kent het opgevraagde adres niet. De bron is niet gevonden. De server geeft niet aan of deze nooit heeft bestaan of alleen momenteel ontbreekt.

Veelvoorkomende oorzaken

  • Typefout of verouderde link
  • Pagina verwijderd, verplaatst of hernoemd zonder doorverwijzing
  • Onjuist documentpad in de webserver (root of alias) of onjuist gebruik van hoofdletters en kleine letters: Linux maakt hierin onderscheid
  • Ontbrekende rewrite-regels, bijvoorbeeld voor WordPress-permalinks of een single-page-app
  • Het bestand is tijdens de deployment niet geüpload

Zo los je het op

  • Controleer het pad en de bestandsnaam, inclusief hoofdlettergebruik.
  • Stel bij nginx try_files in zodat permalinks en single-page-apps werken: try_files $uri $uri/ /index.php?$args; of /index.html.
  • Leid verhuisde pagina’s met een 301-redirect om naar het nieuwe adres.
  • Stel een eigen 404-pagina in met zoekfunctie en links.

Configuratie en opdrachten (voorbeelden)

nginx
error_page 404 /404.html;
Apache
ErrorDocument 404 /404.html
Voor zoekmachineoptimalisatie: Afzonderlijke 404-pagina's schaden de ranking niet. Pagina's met backlinks of verkeer zijn belangrijk: stuur die door met een 301-redirect. Vermijd een foutpagina die met statuscode 200 wordt weergegeven (‘soft 404’).
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De bron bestaat, maar niet voor deze HTTP-methode (GET, POST, PUT, DELETE enzovoort). Het antwoord moet een ‘Allow’-header met de toegestane methoden bevatten.

Veelvoorkomende oorzaken

  • POST naar een route die alleen GET accepteert, of andersom
  • nginx beantwoordt een POST op een statisch bestand met 405
  • Een omleiding met 301 of 302 heeft de POST omgezet in een GET
  • Webserver of WAF blokkeert methoden zoals PUT en DELETE

Zo los je het op

  • Lees de header ‘Allow’; daarin staan de toegestane methoden.
  • Controleer de route en controller in de applicatie.
  • Gebruik 307 of 308 in plaats van 301 of 302 als de methode bij de doorverwijzing behouden moet blijven.
  • Gebruik rechtstreeks het definitieve https-adres, zodat een omleiding de methode niet verandert.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server kan geen antwoord leveren in een formaat dat de client via de ‘Accept’-headers toestaat, zoals een mediatype, taal of tekenset. Sommige Web Application Firewalls (ModSecurity) blokkeren verzoeken ook met deze code.

Veelvoorkomende oorzaken

  • De Accept-header vraagt bijvoorbeeld alleen om application/xml, terwijl de server alleen JSON levert
  • Een ModSecurity-regel heeft de aanvraag als verdacht aangemerkt, vaak bij scripts zonder User-Agent

Zo los je het op

  • Pas de Accept-header aan of laat deze weg.
  • Lees bij ModSecurity het auditlog en controleer welke regel de melding heeft veroorzaakt.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Net als 401, maar de proxyserver vereist aanmelding, niet de doelserver. De proxy stuurt hiervoor de header ‘Proxy-Authenticate’.

Veelvoorkomende oorzaken

  • Een bedrijfs- of schoolproxy vereist aanmelding
  • Onjuiste proxy-inloggegevens in de systeeminstellingen of bij curl

Zo los je het op

  • Voer de inloggegevens voor de proxy in, bijvoorbeeld bij curl met -x benutzer:passwort@proxy:port.
  • Vraag de IT-afdeling of proxyprovider om de juiste inloggegevens.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server heeft te lang op het volledige verzoek van de client gewacht en de verbinding gesloten.

Veelvoorkomende oorzaken

  • Trage of instabiele verbinding van de client
  • Een grote upload wordt afgebroken
  • Een proxy of Load Balancer houdt verbindingen te kort open
  • De browser heeft vooraf een verbinding geopend, maar nooit gebruikt

Zo los je het op

  • Controleer de verbinding en herhaal het verzoek.
  • Verhoog de time-outs op de server.
  • Bij uploads: verklein de bestanden of upload ze in delen.

Configuratie en opdrachten (voorbeelden)

nginx
client_header_timeout 60s;
client_body_timeout 60s;
Apache
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Het verzoek conflicteert met de huidige status van de resource, bijvoorbeeld door gelijktijdige wijzigingen of een item dat al bestaat. De client kan het conflict oplossen en het opnieuw proberen.

Veelvoorkomende oorzaken

  • Een unieke waarde bestaat al, bijvoorbeeld een e-mailadres, gebruikersnaam of domeinnaam
  • Twee gebruikers wijzigen dezelfde bron; de versie komt niet meer overeen
  • De bron kan in de huidige toestand niet worden gewijzigd of verwijderd

Zo los je het op

  • Laad de huidige status opnieuw en pas jouw wijziging nogmaals toe.
  • Lees de antwoordbody: goede API’s vermelden daarin precies wat het conflict is.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De bron bestond ooit, is opzettelijk verwijderd en komt niet terug. Anders dan bij 404 geeft de server hiermee aan dat de bron definitief weg is.

Veelvoorkomende oorzaken

  • De inhoud is bewust verwijderd, bijvoorbeeld een verlopen aanbieding
  • Een serverregel geeft voor oude URL's 410 terug

Zo los je het op

  • Is er een opvolger, stuur dan door met een 301-redirect.
  • Geef voor verwijderde URL's die nooit terugkomen bewust een 410 terug.

Configuratie en opdrachten (voorbeelden)

nginx
location = /alte-seite {
    return 410;
}
Apache
Redirect gone /alte-seite
Voor zoekmachineoptimalisatie: Met 410 maak je zoekmachines duidelijk dat de pagina bewust is verwijderd. Google behandelt 404 en 410 echter vrijwel hetzelfde; het verschil is klein.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server vereist de header ‘Content-Length’, die in het verzoek ontbreekt. Hij accepteert de body alleen als de lengte bekend is.

Veelvoorkomende oorzaken

  • Een client verstuurt de body in delen (chunked) naar een server die dat niet accepteert
  • Een script of proxy laat de header weg

Zo los je het op

  • Stel Content-Length in of gebruik een HTTP-client die de header automatisch verstuurt.
  • Controleer de proxy-instellingen voor het bufferen van verzoeken.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Er is niet voldaan aan een voorwaarde in de aanvraagheader (If-Match, If-Unmodified-Since enzovoort). Daarom voert de server de wijziging niet uit. Zo wordt voorkomen dat wijzigingen worden overschreven.

Veelvoorkomende oorzaken

  • De bron is gewijzigd sinds de client de ETag heeft opgehaald
  • Verouderde ETag in If-Match

Zo los je het op

  • Laad de resource opnieuw, haal de nieuwe ETag op en verstuur de wijziging nogmaals.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De body van het verzoek is groter dan de server toestaat. Dit komt vaak voor bij bestandsuploads. De code heette vroeger ‘Payload Too Large’ en daarvoor ‘Request Entity Too Large’.

Veelvoorkomende oorzaken

  • nginx: client_max_body_size is standaard slechts 1 MB
  • Apache: LimitRequestBody is ingesteld
  • PHP: upload_max_filesize of post_max_size is te klein
  • Een CDN of proxy ervoor beperkt de grootte

Zo los je het op

  • Verhoog de limiet in de configuratie en laad de server opnieuw (nginx -s reload).
  • Verhoog upload_max_filesize en post_max_size in php.ini. post_max_size moet minstens zo groot zijn als upload_max_filesize.
  • Controleer elke schakel in de keten: CDN, proxy, webserver en PHP. De laagste limiet geldt.

Configuratie en opdrachten (voorbeelden)

nginx
client_max_body_size 50M;
Apache
LimitRequestBody 52428800
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De URL is langer dan de server kan verwerken. Meestal komt dit door een fout in de applicatie en gaat het niet om een echt adres.

Veelvoorkomende oorzaken

  • Zeer veel parameters in een GET-verzoek
  • Een omleidingslus voegt bij elke doorgang extra parameters toe
  • Grote hoeveelheden gegevens worden via de URL overgedragen in plaats van via POST

Zo los je het op

  • Verstuur grote hoeveelheden gegevens via POST.
  • Verhelp de doorverwijzingslus.
  • Verhoog zo nodig de limiet van de server.

Configuratie en opdrachten (voorbeelden)

nginx
large_client_header_buffers 4 16k;
Apache
LimitRequestLine 16384
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server herkent het formaat van de verzonden body niet (header ‘Content-Type’). Hij verwerkt bijvoorbeeld alleen JSON, maar ontvangt formuliergegevens.

Veelvoorkomende oorzaken

  • De Content-Type-header ontbreekt of is onjuist, bijvoorbeeld application/json in plaats van text/plain
  • De server verwacht multipart/form-data voor uploads

Zo los je het op

  • Stel de Content-Type in op basis van de body.
  • Lees de API-documentatie.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Het opgevraagde bereik (header ‘Range’) valt buiten het bestand. De server vermeldt de werkelijke grootte in ‘Content-Range’.

Veelvoorkomende oorzaken

  • Een download wordt vanaf een offset hervat, maar het bestand is kleiner geworden of vervangen
  • Een defecte downloadmanager

Zo los je het op

  • Verwijder de gedeeltelijke download en begin opnieuw.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server kan niet voldoen aan de verwachting in de header ‘Expect’. Meestal gaat het om ‘100-continue’, dat een proxy of server niet ondersteunt.

Veelvoorkomende oorzaken

  • Een verouderde proxy of server zonder ondersteuning voor Expect
  • curl stuurt bij grote POST-verzoeken automatisch Expect: 100-continue

Zo los je het op

  • Schakel de header bij curl uit met -H 'Expect:'.
  • Werk de proxy bij.

Configuratie en opdrachten (voorbeelden)

Shell
curl -H 'Expect:' -d @datei.json https://example.com/api
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Een 1-aprilgrap uit RFC 2324 (Hyper Text Coffee Pot Control Protocol): een theepot weigert koffie te zetten. De code is gereserveerd en wordt in de praktijk gebruikt als grap of om bots te weren.

Gedefinieerd in RFC 2324

Betekenis

Het verzoek is verzonden naar een server die voor deze combinatie van schema en host geen antwoord kan geven. Dit komt voor bij HTTP/2 wanneer een browser een verbinding voor meerdere hostnamen hergebruikt.

Veelvoorkomende oorzaken

  • Meerdere domeinen op één IP met een gedeeld certificaat, maar een andere configuratie per host
  • SNI en Host-header komen niet overeen

Zo los je het op

  • Maak de certificaten en virtuele hosts van de betrokken domeinen consistent.
  • Controleer met curl --resolve welke host antwoordt.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server begrijpt het verzoek en het formaat klopt, maar de inhoud is ongeldig. Er ontbreekt bijvoorbeeld een verplicht veld of een waarde valt buiten het toegestane bereik. De code heette vroeger ‘Unprocessable Entity’. Veel frameworks gebruiken deze voor validatiefouten.

Veelvoorkomende oorzaken

  • De validatie mislukt, bijvoorbeeld door het e-mailformaat, de lengte of een verplicht veld
  • Een logische fout, bijvoorbeeld een einddatum vóór de begindatum

Zo los je het op

  • Lees de antwoordbody: daarin staan de velden en foutmeldingen.
  • Vergelijk de invoer met de API-documentatie.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De bron is vergrendeld, bijvoorbeeld omdat iemand deze in WebDAV heeft uitgecheckt om te bewerken.

Zo los je het op

  • Hef de vergrendeling op (UNLOCK) of wacht tot de andere gebruiker klaar is.
Zie ook:
Gedefinieerd in RFC 4918

Betekenis

Het verzoek is mislukt omdat een ander verzoek waarvan het afhankelijk is, is mislukt. Deze code komt uit WebDAV en wordt ook door orchestratietools gebruikt.

Zie ook:
Gedefinieerd in RFC 4918

Betekenis

De server wil een verzoek niet verwerken dat opnieuw kan worden afgespeeld (replayaanval). Dit komt voor bij TLS 1.3 Early Data (0-RTT).

Gedefinieerd in RFC 8470

Betekenis

De server vereist een ander protocol. De header ‘Upgrade’ geeft aan welk protocol. Een voorbeeld is een verzoek via HTTP/1.1 terwijl de server TLS of HTTP/2 vereist.

Veelvoorkomende oorzaken

  • Verouderde TLS-versie
  • De API is alleen bereikbaar via WebSocket of HTTPS

Zo los je het op

  • Werk de client en bibliotheek bij.
  • Verstuur het verzoek via het vereiste protocol.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server vereist een voorwaarde (If-Match) om te voorkomen dat een verouderde versie per ongeluk wordt overschreven.

Veelvoorkomende oorzaken

  • Een PUT zonder If-Match voor een beveiligde resource

Zo los je het op

  • Haal de ETag van de bron op en zet deze in de header If-Match.
Zie ook:
Gedefinieerd in RFC 6585

Betekenis

De client heeft binnen een bepaalde tijd te veel verzoeken verzonden (rate limiting). De header ‘Retry-After’ geeft aan wanneer de client het opnieuw mag proberen.

Veelvoorkomende oorzaken

  • API- of inloglimiet overschreden, bijvoorbeeld door een lus in het script
  • Een bot, crawler of scraper veroorzaakt veel belasting
  • Een beveiliging tegen brute-forceaanvallen (Fail2ban, WAF) grijpt in
  • Meerdere gebruikers delen één IP-adres (NAT, VPN) en worden samen geteld

Zo los je het op

  • Wacht de tijd uit Retry-After af en probeer het opnieuw met steeds langere tussenpozen (exponential backoff).
  • Bundel verzoeken en sla antwoorden tijdelijk op.
  • Als beheerder: stel limieten per IP of API-key in en antwoord met 429; nginx gebruikt standaard 503.
  • Sta legitieme crawlers toe.

Configuratie en opdrachten (voorbeelden)

nginx
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;

server {
    location /api/ {
        limit_req zone=api burst=20 nodelay;
        limit_req_status 429;
    }
}
Voor zoekmachineoptimalisatie: Googlebot behandelt 429 als een serverfout en crawlt daardoor langzamer. Stel limieten zo in dat zoekmachines er niet voortdurend door worden getroffen.
Zie ook:
Gedefinieerd in RFC 6585

Betekenis

De headers van het verzoek zijn samen of afzonderlijk te groot. Meestal komt dit door te veel of te grote cookies.

Veelvoorkomende oorzaken

  • Opgeslagen cookies (tracking, sessies) op een domein
  • Een zeer lange Authorization-header, bijvoorbeeld een groot JWT
  • Een omleidingslus voegt steeds meer cookies toe

Zo los je het op

  • Verwijder de cookies van het domein.
  • Vergroot de headerbuffers van de server.
  • Houd JWT's en headers klein.

Configuratie en opdrachten (voorbeelden)

nginx
large_client_header_buffers 4 16k;
Apache
LimitRequestFieldSize 16384
Zie ook:
Gedefinieerd in RFC 6585

Betekenis

Een nginx-specifieke code die nooit naar de client wordt verzonden: nginx sluit de verbinding zonder antwoord. De code staat alleen in het accesslog. Beheerders gebruiken return 444; om bots en ongeldige hostverzoeken te weigeren.

Veelvoorkomende oorzaken

  • return 444; in de nginx-configuratie, bijvoorbeeld in de standaardserver

Zo los je het op

  • Is dit de bedoeling, dan hoef je niets te doen.
  • Is dit niet de bedoeling, controleer dan de regel met nginx -T en zoek naar return 444.

Configuratie en opdrachten (voorbeelden)

nginx
server {
    listen 80 default_server;
    return 444;
}
Zie ook:
Gedefinieerd in nginx

Betekenis

De bron is om juridische redenen geblokkeerd, bijvoorbeeld vanwege een gerechtelijk bevel, censuur of geoblocking. De code verwijst naar Ray Bradbury’s roman ‘Fahrenheit 451’.

Veelvoorkomende oorzaken

  • Blokkering op bevel, bijvoorbeeld wegens auteursrecht of een overheidsinstantie
  • De aanbieder blokkeert bepaalde regio's vanwege wettelijke voorschriften

Zo los je het op

  • De beheerder vermeldt de reden meestal in de body van het antwoord.
  • Vraag het de beheerder; het omzeilen van de blokkade kan onwettig zijn.
Zie ook:
Gedefinieerd in RFC 7725

Betekenis

De client heeft de verbinding gesloten voordat nginx het antwoord kon verzenden. De code staat alleen in het nginx-log; het is geen echte HTTP-code.

Veelvoorkomende oorzaken

  • Een gebruiker breekt het laden van de pagina af of sluit het tabblad
  • De time-out van de client is korter dan de responstijd van de server
  • Een Load Balancer of proxy ervoor verbreekt de verbinding te vroeg

Zo los je het op

  • Verkort de reactietijd van de applicatie, bijvoorbeeld bij trage databasequery's.
  • Stem de time-outs van client, proxy en server op elkaar af.
Zie ook:
Gedefinieerd in nginx

Betekenis

Een algemene serverfout: de server is op een onverwacht probleem gestuit en kon het verzoek niet verwerken. De code vertelt niet wat er misging; de oorzaak staat in het foutenlogboek.

Veelvoorkomende oorzaken

  • Fout in de applicatiecode, bijvoorbeeld een fatale PHP-fout of een niet-afgevangen exception
  • Foutieve .htaccess of foutieve webserverconfiguratie
  • Onjuiste bestandsrechten of een onjuiste eigenaar van scripts
  • De database is niet bereikbaar of de toegangsgegevens zijn onjuist
  • De PHP-geheugenlimiet (memory_limit) of max_execution_time is bereikt
  • Er ontbreekt een PHP-extensie of de PHP-versie is niet compatibel met de plugin

Zo los je het op

  • Lees het foutenlog: daarin staan het bestand en de regel waar de fout optreedt.
  • Draai wijzigingen van de afgelopen minuten terug (Plugin, Update, .htaccess).
  • Test de configuratie met nginx -t of apachectl configtest.
  • Schakel de debugmodus (WP_DEBUG, APP_DEBUG) alleen lokaal of kortstondig in, nooit permanent op een productiesysteem.

Configuratie en opdrachten (voorbeelden)

nginx
tail -n 50 /var/log/nginx/error.log
Apache
tail -n 50 /var/log/apache2/error.log
Voor zoekmachineoptimalisatie: Bij aanhoudende 5xx-fouten komt Googlebot minder vaak langs. Als een fout dagenlang aanhoudt, kunnen URL's uit de index verdwijnen.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server kent de gevraagde methode niet of kan deze niet uitvoeren. Anders dan bij 405 gaat het niet om deze ene bron, maar om ontbrekende ondersteuning in het algemeen.

Veelvoorkomende oorzaken

  • Een ongebruikelijke of verkeerd gespelde HTTP-methode
  • Server of proxy ondersteunt de functie niet, bijvoorbeeld bij oude software

Zo los je het op

  • Controleer de gebruikte methode.
  • Werk de serversoftware bij.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

Een server die als gateway of proxy werkt (nginx, Apache, Load Balancer, CDN), heeft van de achterliggende server een ongeldig antwoord of helemaal geen antwoord ontvangen. De fout zit tussen de servers, niet bij de bezoeker.

Veelvoorkomende oorzaken

  • De backenddienst (PHP-FPM, Node.js, Gunicorn, Docker-container) draait niet of is gecrasht
  • Onjuiste upstream: poort of socket in proxy_pass of fastcgi_pass klopt niet
  • De backend sluit de verbinding voortijdig, bijvoorbeeld door geheugenproblemen of een crash
  • Een firewall of SELinux blokkeert de verbinding met de backend
  • Een CDN kan de oorspronkelijke server niet goed bereiken

Zo los je het op

  • Controleer de status van de backenddienst en start deze opnieuw (systemctl status, docker ps).
  • Controleer of er op het upstream-adres een proces luistert (ss -tlnp).
  • Lees het foutenlog van de webserver: ‘connect() failed (111: Connection refused) while connecting to upstream’ vermeldt het doel.
  • Controleer het socketpad en de rechten van PHP-FPM.
  • Is er genoeg werkgeheugen? De OOM-killer beëindigt vaak eerst het backendproces.

Configuratie en opdrachten (voorbeelden)

Shell
ss -tlnp | grep :3000
nginx
tail -n 50 /var/log/nginx/error.log
Shell
dmesg | grep -i "out of memory"
Voor zoekmachineoptimalisatie: Een korte 502-storing heeft nauwelijks invloed op zoekmachines. Houdt deze aan, dan behandelt Googlebot de pagina zoals bij elke andere 5xx-fout en crawlt hij minder.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server kan het verzoek tijdelijk niet verwerken, meestal door overbelasting of onderhoud. Met ‘Retry-After’ kan hij aangeven wanneer het weer lukt.

Veelvoorkomende oorzaken

  • Onderhoudsmodus, bijvoorbeeld van WordPress of Laravel, of gepland onderhoud
  • Overbelasting: te veel gelijktijdige verzoeken of processen, bijvoorbeeld wanneer pm.max_children bij PHP-FPM is bereikt
  • Een backenddienst achter een proxy of loadbalancer is niet bereikbaar
  • nginx beantwoordt overschrijdingen van limit_req en limit_conn standaard met 503
  • Resourcelimieten van de hosting (CPU, RAM, processen) zijn bereikt

Zo los je het op

  • Schakel de onderhoudsmodus uit. Controleer op een .maintenance-bestand (WordPress) of op php artisan down (Laravel).
  • Controleer de belasting (top, free -m) en verhoog proceslimieten zoals pm.max_children.
  • Geef bij gepland onderhoud bewust een 503-respons met Retry-After terug.
  • Controleer het webserverlog op upstream-fouten.

Configuratie en opdrachten (voorbeelden)

nginx
error_page 503 /wartung.html;

location / {
    return 503;
}

location = /wartung.html {
    root /var/www/wartung;
    internal;
    add_header Retry-After 3600 always;
}
Apache
ErrorDocument 503 /wartung.html
Header always set Retry-After "3600"

RewriteEngine On
RewriteCond %{REQUEST_URI} !=/wartung.html
RewriteRule ^ - [R=503,L]
Voor zoekmachineoptimalisatie: Een korte 503-respons met Retry-After is bij onderhoud de juiste aanpak voor zoekmachines. Duurt dit dagen, dan kunnen de URL's uit de index verdwijnen.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De gateway of proxy heeft niet op tijd antwoord gekregen van de achterliggende server. Anders dan bij 502 is het antwoord niet ongeldig, maar te traag.

Veelvoorkomende oorzaken

  • Een trage applicatie: zware databasequery, rapport, import of externe API-aanroep
  • De backend is overbelast; alle PHP-FPM-workers zijn bezet
  • De time-outwaarden van de proxy zijn lager dan de duur van het verzoek
  • Een netwerkprobleem tussen proxy en backend

Zo los je het op

  • Vind trage query's en scripts en maak ze sneller (Slow Query Log, Profiler).
  • Verplaats langdurige taken naar achtergrondtaken.
  • Verhoog de time-outs op elkaar afgestemd: proxy_read_timeout, fastcgi_read_timeout en max_execution_time in PHP.
  • Controleer de capaciteit van de backend (workers, geheugen).

Configuratie en opdrachten (voorbeelden)

nginx
proxy_read_timeout 120s;
fastcgi_read_timeout 120s;
Apache
ProxyTimeout 120
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De server ondersteunt de HTTP-versie van het verzoek niet.

Veelvoorkomende oorzaken

  • Een zeer oude of defecte client of proxy gebruikt een ongebruikelijke HTTP-versie
  • Het doelsysteem ondersteunt slechts één specifieke versie

Zo los je het op

  • Werk de client bij of forceer HTTP/1.1, bij curl met --http1.1.
Zie ook:
Gedefinieerd in RFC 9110

Betekenis

De serverconfiguratie voor content negotiation is onjuist: de gekozen variant verwijst zelf weer naar een onderhandeling. Dit komt vrijwel alleen voor bij configuratiefouten.

Zie ook:
Gedefinieerd in RFC 2295

Betekenis

De server heeft onvoldoende opslagruimte om het verzoek af te ronden.

Veelvoorkomende oorzaken

  • Harde schijf, quota of inodes zijn vol
  • De upload kan niet meer worden opgeslagen

Zo los je het op

  • Controleer de opslagruimte met df -h en df -i en verwijder oude logs, Backups en caches.
  • Verhoog het quotum.

Configuratie en opdrachten (voorbeelden)

Shell
df -h && df -i
Zie ook:
Gedefinieerd in RFC 4918

Betekenis

De server heeft tijdens de verwerking een oneindige lus gedetecteerd.

Veelvoorkomende oorzaken

  • Een circulaire WebDAV-binding
  • Een mappenstructuur met een symlink-lus

Zo los je het op

  • Controleer koppelingen en symlinks.
Zie ook:
Gedefinieerd in RFC 5842

Betekenis

Het verzoek bevat niet de uitbreiding die de server volgens RFC 2774 vereist. Deze code is historisch en komt in de praktijk vrijwel nooit voor.

Gedefinieerd in RFC 2774

Betekenis

De client moet zich bij het netwerk aanmelden voordat deze toegang krijgt. Verzonden door een captive portal, bijvoorbeeld op de wifi van een hotel, luchthaven of café.

Veelvoorkomende oorzaken

  • Een captive portal op het wifinetwerk vraagt om inloggen of toestemming

Zo los je het op

  • Open een willekeurige pagina via http, bijvoorbeeld http://neverssl.com, zodat de portal verschijnt.
  • Log in op het portaal.
Zie ook:
Gedefinieerd in RFC 6585

Betekenis

Cloudflare kreeg van de oorspronkelijke server een antwoord dat niet verwerkt kon worden: leeg, afgebroken of met ongeldige headers. Een algemene Cloudflare-fout.

Veelvoorkomende oorzaken

  • De oorspronkelijke server crasht bij het verzoek, bijvoorbeeld door een PHP-fout
  • De antwoordheaders zijn groter dan 32 KB, vaak door te veel cookies
  • Het antwoord is leeg of de verbinding is zonder antwoord gesloten
  • Een firewall blokkeert sommige Cloudflare-IP-adressen

Zo los je het op

  • Lees het foutenlog van de oorspronkelijke server.
  • Sta de Cloudflare-IP-bereiken toe in de firewall en Fail2ban.
  • Verklein headers en cookies.
Zie ook:
Gedefinieerd in Cloudflare

Betekenis

Cloudflare kon geen verbinding maken met de oorspronkelijke server: die heeft de verbinding geweigerd. De website en Cloudflare zijn bereikbaar, maar jouw server erachter niet.

Veelvoorkomende oorzaken

  • De webserver (nginx, Apache) draait niet
  • Een firewall of de hostingprovider blokkeert de Cloudflare-IP-adressen
  • Onjuist bron-IP-adres of onjuiste poort in de Cloudflare-instellingen

Zo los je het op

  • Start de webserver en controleer of deze luistert op poort 80 en 443.
  • Sta de Cloudflare-IP-bereiken toe.
  • Controleer het DNS-A-record en de poort van de oorsprongsserver.

Configuratie en opdrachten (voorbeelden)

Shell
ss -tlnp | grep -E ':(80|443)\b'
Zie ook:
Gedefinieerd in Cloudflare

Betekenis

Cloudflare probeerde verbinding te maken met de oorspronkelijke server, maar de TCP-handshake werd niet op tijd voltooid. De verbinding liep vast voordat er een verzoek werd verzonden.

Veelvoorkomende oorzaken

  • De oorspronkelijke server is overbelast of offline
  • Een firewall laat pakketten van Cloudflare vallen
  • Onjuist IP-adres of een routeringsprobleem

Zo los je het op

  • Controleer de bereikbaarheid en belasting van de server.
  • Sta de Cloudflare-IP-bereiken toe in de firewall.
  • Controleer het IP-adres in het DNS-record.
Zie ook:
Gedefinieerd in Cloudflare

Betekenis

Cloudflare kan de oorspronkelijke server niet bereiken, bijvoorbeeld door een DNS-fout of een ontbrekende route.

Veelvoorkomende oorzaken

  • Onjuist IP-adres in het DNS-record
  • Server of datacenter offline, routeringsprobleem

Zo los je het op

  • Controleer het DNS-record.
  • Vraag het je hoster en controleer het netwerk.
Zie ook:
Gedefinieerd in Cloudflare

Betekenis

Cloudflare kon verbinding maken, maar de oorspronkelijke server gaf niet binnen 100 seconden een HTTP-antwoord.

Veelvoorkomende oorzaken

  • Lange scripts, exports of imports
  • Een overbelaste server

Zo los je het op

  • Verplaats langdurige taken naar achtergrondtaken.
  • Verkort de reactietijd.
  • Gebruik voor langdurige taken streaming of statuscontroles in plaats van één enkele aanvraag.
Zie ook:
Gedefinieerd in Cloudflare

Betekenis

De TLS-handshake tussen Cloudflare en de oorspronkelijke server is mislukt.

Veelvoorkomende oorzaken

  • De oorspronkelijke server biedt geen HTTPS aan op poort 443
  • Er is geen gemeenschappelijke Cipher-Suite of TLS-versie
  • SNI ontbreekt of het certificaat komt niet overeen

Zo los je het op

  • Controleer de TLS-configuratie van de oorsprongsserver.
  • Kies de SSL/TLS-modus in Cloudflare die past bij de oorspronkelijke server.
Zie ook:
Gedefinieerd in Cloudflare

Betekenis

Cloudflare kon het certificaat van de oorspronkelijke server niet verifiëren. Dit gebeurt in de modus ‘Full (strict)’.

Veelvoorkomende oorzaken

  • Verlopen, zelfondertekend certificaat of certificaat dat niet voor het domein is uitgegeven
  • Er ontbreekt een tussencertificaat

Zo los je het op

  • Installeer een geldig certificaat (Let's Encrypt of een Cloudflare Origin Certificate).
  • Lever de volledige certificaatketen aan.
Zie ook:
Gedefinieerd in Cloudflare

Voorbeeldresultaat

Wat het overzicht van HTTP-statuscodes je laat zien

Voer een nummer of zoekwoord in en ontvang direct de bijbehorende statuscodes, elk met betekenis, typische oorzaken, oplossing en, waar van toepassing, een kant-en-klaar voorbeeld voor nginx of Apache. Drie voorbeelden:

Voorbeeld 1: een nummer opzoeken

Invoer:

502

Uitvoer: één vermelding met deze gegevens

Statuscode en naam
502 Bad Gateway
Klasse
5xx Serverfout
Betekenis
Een server die als gateway of proxy werkt (nginx, Apache, Load Balancer, CDN), heeft van de achterliggende server een ongeldig antwoord of helemaal geen antwoord ontvangen. De fout zit tussen de servers, niet bij de bezoeker.
Eerste veelvoorkomende oorzaak
De backenddienst (PHP-FPM, Node.js, Gunicorn, Docker-container) draait niet of is gecrasht
Eerste stap naar de oplossing
Controleer de status van de backenddienst en start deze opnieuw (systemctl status, docker ps).
Voorbeeld om te kopiëren (nginx)
tail -n 50 /var/log/nginx/error.log

Resultaat in woorden: Bij 502 Bad Gateway reageert de server achter de proxy niet of geeft deze een ongeldig antwoord. Het item noemt 5 veelvoorkomende oorzaken en 5 stappen om het probleem op te lossen, zoals de backenddienst controleren en het foutenlogboek lezen. De fout zit tussen de servers, niet bij de bezoeker.

Voorbeeld 2: zoeken naar een klasse

Invoer:

3xx

Uitvoer: alle codes uit de klasse 3xx in de lijst

Treffers bij zoeken naar 3xx
StatuscodeNaam
300Multiple Choices
301Moved Permanently
302Found
303See Other
304Not Modified
307Temporary Redirect
308Permanent Redirect

Resultaat in woorden: De lijst bevat 7 codes uit de klasse 3xx, de verouderde 305 en 306 ontbreken. Niet elke code stuurt door: 304 verwijst bijvoorbeeld naar de cache. De belangrijkste zijn 301 (permanent verplaatst), 302 (tijdelijk omgeleid) en 304 (ongewijzigd, cache gebruiken). Elke vermelding legt uit wanneer deze voorkomt en hoe je deze correct gebruikt.

Voorbeeld 3: zoeken op trefwoord

Invoer:

timeout

Uitvoer: beste resultaten eerst

  1. 408 Request Timeout
  2. 504 Gateway Timeout
  3. 524 A Timeout Occurred
  4. 102 Processing

Resultaat in woorden: 4 items bevatten het trefwoord. Treffers in de naam staan bovenaan: 408 Request Timeout, 504 Gateway Timeout, 524 A Timeout Occurred. Daarna volgen items waarin ‘timeout’ alleen voorkomt in de uitleg, oorzaken of configuratievoorbeelden.

Zo werkt het

Zo zoek je een statuscode op

Vier stappen van nummer tot kant-en-klaar voorbeeld – zonder account, zonder download.

Stap 1

Statuscode of trefwoord invoeren

Typ een nummer zoals 502, een naam zoals ‘bad gateway’ of een trefwoord zoals ‘timeout’ of ‘doorverwijzing’ in het zoekveld. De resultaten verschijnen direct terwijl je typt.

Stap 2

Filteren op klasse

Met de filters beperk je de resultaten tot één klasse: 3xx voor doorverwijzingen, 4xx voor clientfouten en 5xx voor serverfouten. ‘Veelgezocht’ toont de codes die je in de praktijk tegenkomt.

Stap 3

Vermelding uitklappen

Klik op een code voor de betekenis en, waar van toepassing, veelvoorkomende oorzaken, oplossingen en het effect op zoekmachineoptimalisatie. Via ‘Zie ook’ ga je naar verwante codes.

Stap 4

Voorbeeld kopiëren en aanpassen

Waar nuttig, vind je er een voorbeeld voor nginx, Apache of de shell bij. Kopieer het, pas de paden en waarden aan je server aan en herlaad de webserver.

Veelvoorkomende fouten

404, 403, 500, 502, 503: de meest voorkomende HTTP-fouten kort uitgelegd

Kort antwoord bij elke foutcode. Met ‘Alle oorzaken en oplossingen’ open je het volledige item in de referentie hierboven.

400

Bad Request

De server begrijpt het verzoek niet. Veelvoorkomende oorzaken zijn een ongeldig adres, te grote of beschadigde cookies en een ongeldige requestheader. Verwijder de cookies van de website en controleer het adres.

Alle oorzaken en oplossingen

401

Unauthorized

Voor deze pagina moet je aangemeld zijn, maar je aanmelding ontbreekt of is ongeldig. Met de juiste inloggegevens werkt het wel, bijvoorbeeld bij wachtwoordbeveiliging via .htaccess of een API met een token.

Alle oorzaken en oplossingen

403

Forbidden

De server kent het adres, maar weigert je toegang. Veelvoorkomende oorzaken zijn onjuiste bestandsrechten, een ontbrekend indexdocument, een IP-blokkade of een firewallregel.

Alle oorzaken en oplossingen

404

Not Found

Op dit adres staat niets: er is een typefout, de pagina is verwijderd of verplaatst, of het hoofdlettergebruik klopt niet. Verplaatste pagina's stuur je door met een 301-redirect. Afzonderlijke 404-fouten schaden de ranking niet.

Alle oorzaken en oplossingen

429

Too Many Requests

Je hebt in korte tijd te veel verzoeken verzonden. Wacht de tijd af die in de header Retry-After staat en probeer het daarna opnieuw, met steeds langere tussenpozen.

Alle oorzaken en oplossingen

500

Internal Server Error

Een algemene serverfout. De oorzaak staat in het foutenlogboek van de webserver. Vaak ligt het aan een codefout, een defect .htaccess-bestand, onjuiste rechten of een onbereikbare database.

Alle oorzaken en oplossingen

502

Bad Gateway

De proxy of loadbalancer krijgt geen geldig antwoord van de backend, meestal omdat PHP-FPM, Node.js of de applicatieserver niet draait of is vastgelopen. Controleer de dienst en het logbestand.

Alle oorzaken en oplossingen

503

Service Unavailable

De server is overbelast of in onderhoud en geeft aan dat dit tijdelijk is. Voor onderhoudswerkzaamheden is 503 met de header Retry-After de juiste code.

Alle oorzaken en oplossingen

504

Gateway Timeout

De backend reageert te langzaam; de proxy geeft het op na de wachttijd. Zoek naar trage queries of scripts en verhoog zo nodig de timeout, bij nginx proxy_read_timeout.

Alle oorzaken en oplossingen

Overzicht

De vijf klassen van HTTP-responscodes

Het eerste cijfer vertelt je wat er aan de hand is. Zo zie je ook zonder iets op te zoeken of de fout bij de bezoeker of de server ligt.

1xx

Informatie

Het verzoek is ontvangen en wordt verder verwerkt. Dit is een tussenbericht, nog geen resultaat.

Vaak:

4 codes in deze referentie

2xx

Succes

Het verzoek is begrepen en succesvol verwerkt. 200 is de normale status.

Vaak: 200, 201, 204

10 codes in deze referentie

3xx

Doorverwijzing

De client moet nog een stap uitvoeren, meestal een nieuw adres volgen of de cache gebruiken.

Vaak: 301, 302, 304, 307, 308

7 codes in deze referentie

4xx

Clientfout

Het verzoek is ongeldig of niet toegestaan. Vanuit het perspectief van de server ligt de fout bij de client, bijvoorbeeld 404 bij een onbekend adres.

Vaak: 400, 401, 403, 404, 405, 410, 413, 422, 429

31 codes in deze referentie

5xx

Serverfout

Het verzoek was geldig, maar de server heeft het niet afgehandeld. De fout ligt bij de beheerder, bijvoorbeeld 500, 502 of 503.

Vaak: 500, 502, 503, 504

18 codes in deze referentie

Doorverwijzingen

301 of 302? Omleidingscodes vergeleken

Vijf codes leiden door. Ze verschillen op twee punten: of de omleiding permanent is en of de client de HTTP-methode behoudt.

Vergelijking van de redirectstatuscodes 301, 302, 303, 307 en 308
StatuscodeDuurMethode blijft behouden
301 Moved PermanentlyVerhuizing van een pagina of domein, van http naar https of van www naar het hoofddomein. De standaard voor SEO.permanentniet gegarandeerd
302 FoundTijdelijke omleiding, bijvoorbeeld voor campagnes, inloggen of taalkeuze.tijdelijkniet gegarandeerd
303 See OtherNa een POST doorsturen naar een resultatenpagina (Post/Redirect/Get). De browser haalt deze op via GET.tijdelijkniet gegarandeerd
307 Temporary RedirectTijdelijke omleiding van een API of formulier waarbij de methode behouden moet blijven.tijdelijkja
308 Permanent RedirectPermanente verhuizing van een API of formulierbestemming waarbij de methode behouden moet blijven.permanentja

Vuistregel: 301 voor gewone pagina's die permanent verhuizen, 302 voor tijdelijke verhuizingen. Moet POST bij een API of formulier behouden blijven, gebruik dan 308 in plaats van 301 en 307 in plaats van 302. 'Niet gegarandeerd' betekent dat browsers een POST vaak omzetten naar een GET.

Praktijk

Zo vind je de statuscode van een pagina

Open in de browser de ontwikkelaarstools (F12). Op het tabblad 'Netwerk' zie je de code van elk verzoek. Op de server of in de shell helpen deze vier opdrachten:

Toont alleen de antwoordheaders; de eerste regel bevat de statuscode.

curl -I https://example.com/seite

Geeft alleen de statuscode weer, handig voor scripts en monitoring.

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/seite

Volgt omleidingen en toont elke stap met statuscode en bestemming.

curl -sIL https://example.com/alt | grep -iE '^(HTTP|location)'

Telt de statuscodes in de Access-Log van nginx of Apache (combined-formaat) en sorteert ze op frequentie.

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

Meer ontdekken

Meer tools

FAQ

Veelgestelde vragen

Korte antwoorden over de meest voorkomende HTTP-codes, hun oorzaken en deze naslagpagina.

Een HTTP-statuscode is een getal van drie cijfers dat een server bij elk verzoek terugstuurt. Het geeft aan of het verzoek is gelukt en zo niet, waarom. Het eerste cijfer bepaalt de categorie: 1xx informatie, 2xx succes, 3xx omleiding, 4xx clientfout, 5xx serverfout. De HTTP-foutcodes die je het vaakst tegenkomt, zijn 400, 401, 403, 404 en 429 aan de clientkant en 500, 502, 503 en 504 aan de serverkant. Het filter ‘Veelgezocht’ in het overzicht toont ze samen met andere codes die vaak voorkomen.

200 OK betekent dat het verzoek is gelukt en dat de server de pagina of gegevens terugstuurt. Dit is de normale status voor pagina's die bezoekers en zoekmachines moeten zien. Zorg dat foutpagina's niet met 200 worden teruggestuurd, anders ontstaan ‘soft 404's’. Verwante codes: 201 Created meldt een nieuw aangemaakte resource, 204 No Content een geslaagd antwoord zonder body en 304 Not Modified betekent dat het bestand niet is gewijzigd en de browser zijn eigen kopie gebruikt.

De server begrijpt het verzoek niet en wijst het af voordat hij het verwerkt. Veelvoorkomende oorzaken zijn een ongeldig adres met ongeldige tekens, te grote of beschadigde cookies, een te grote header en een verkeerd opgemaakte requestbody bij een API. Als bezoeker kun je de cookies van de site verwijderen. Als beheerder controleer je het verzoek, de headers en het logboek. Is de opmaak correct maar een waarde ongeldig, bijvoorbeeld door een ontbrekend verplicht veld, dan antwoorden veel API's in plaats daarvan met 422 Unprocessable Content (voorheen ‘Unprocessable Entity’).

De server is bereikbaar, maar kent het adres niet. Controleer eerst op typefouten en de hoofdletters en kleine letters in de bestandsnaam, want Linux maakt daar onderscheid tussen. Controleer daarna het pad op de webserver en, bij WordPress of een single-page-app, de rewrite-regels (bij nginx try_files). Leid verplaatste pagina's om met een 301-redirect. Afzonderlijke 404-fouten schaden de ranking niet, maar belangrijke pagina's met backlinks die nergens meer naartoe leiden wel.

401 Unauthorized betekent ‘niet ingelogd’: met geldige inloggegevens lukt het wel. 403 Forbidden betekent ‘ingelogd of niet, toegang niet toegestaan’: de server weigert de toegang hoe dan ook. Veelvoorkomende oorzaken van 403 zijn verkeerde bestandsrechten of een verkeerde eigenaar, een ontbrekend indexbestand, IP-blokkades en WAF-regels. De CHMOD-calculator rekent rechten zoals 755 voor directories en 644 voor bestanden om. Naar de CHMOD-calculator

De code onthult de oorzaak niet; die staat in het foutenlog van de webserver (bij nginx /var/log/nginx/error.log, bij Apache /var/log/apache2/error.log) of in het PHP-log. Veelvoorkomende oorzaken zijn een fout in de code, een onjuist .htaccess-bestand, verkeerde bestandsrechten, een onbereikbare database of een bereikt PHP-geheugenlimiet. Draai de laatste wijziging (plugin, update, regel) terug en test de configuratie met nginx -t of apachectl configtest.

502 Bad Gateway: de proxy krijgt een ongeldig of helemaal geen antwoord van de backend, meestal omdat de dienst (PHP-FPM, Node.js) niet draait. 503 Service Unavailable: de server is overbelast of in onderhoud en meldt dat zelf. 504 Gateway Timeout: de backend antwoordt, maar te langzaam, meestal door een zware query of overbelasting. Eerste hulp bij alle drie: lees het foutlogboek en controleer de backenddienst. Voor gepland onderhoud is 503 met de header ‘Retry-After’ de juiste code, niet een onderhoudspagina met 200.

301 geeft een permanente verhuizing aan: zoekmachines nemen het nieuwe adres over en dragen rankings over. 302 geeft een tijdelijke omleiding aan: het oude adres blijft in de index. Gebruik 301 voor domein- en paginaverhuizingen en 302 voor tijdelijke situaties zoals campagnes. Moet bij een formulier of API de methode (POST) behouden blijven, gebruik dan 308 in plaats van 301 en 307 in plaats van 302.

Dit zijn geen codes uit de HTTP-standaard. 520 tot en met 526 komen van Cloudflare en geven aan dat Cloudflare, niet je bezoeker, een probleem heeft met je originserver: 520 onbekende fout, 521 verbinding geweigerd, 522 verbinding kon niet tot stand worden gebracht, 523 originserver niet bereikbaar, 524 geen antwoord binnen 100 seconden, 525 TLS-handshake mislukt, 526 ongeldig certificaat. Vaak helpt het om de Cloudflare-IP-bereiken in de firewall toe te staan en de webserver en het certificaat te controleren. 444 en 499 komen alleen voor in het nginx-logboek: bij 444 sluit nginx de verbinding bewust zonder antwoord, bij 499 heeft de client de verbinding gesloten voordat het antwoord kwam.

Open met F12 de ontwikkelaarstools in je browser en kijk op het tabblad ‘Netwerk’ in de kolom ‘Status’. In de shell toont curl -I https://example.com de headers en statuscode, en curl -s -o /dev/null -w "%{http_code}" https://example.com geeft alleen het getal weer. Met curl -sIL zie je ook elke omleiding onderweg. Deze naslagpagina vraagt zelf geen adressen op: alles draait in je browser. Alleen de zoekterm en het klassefilter staan in de adresbalk, zodat je een zoekopdracht kunt delen. Een reeks omleidingen controleer je met de Redirect Checker. Naar de Redirect Checker

Beheer je momenteel iets van jezelf?

Statuscode 200 in plaats van 502: hosting die je applicatie betrouwbaar beschikbaar maakt

Een ZAP-Hosting VPS brengt je applicatie of project betrouwbaar online.

4,4/5 Trustpilot32.000+ Actieve serversSinds 2010

Geen installatie. Geen risico. Binnen enkele seconden online.

Flexibele looptijdOp elk moment opzegbaarBinnen 60 seconden online

Op zoek naar meer tools? Alle ontwikkelaarstools bekijken