Belang van juiste HTTP status codes

  • ± 3 minuten

Vrijwel iedereen die actief is op het internet, loopt wel eens tegen de welbekende 404 pagina aan, in combinatie met een zinsnede als 'Page not found', 'Deze pagina is niet beschikbaar' of gewoonweg 'Error'. De 3-cijferige code zijn echter vooral van nut voor webbrowsers en zoekmachine robots. Vooral bij een reorganisatie van je website kunnen deze HTTP status codes je helpen om je positie in de zoekmachines te laten behouden.

Een andere bekende HTTP status code is 301 (Permanente redirect). Een website of server kan deze code afgeven als een pagina verhuisd is, in combinatie met een nieuwe URL waarnaar doorverwezen moet worden. Een webbrowser zal weten dat hij de gebruiker door moet verwijzen naar de nieuwe pagina. De gebruiker, jij dus, zal hier weinig van merken.

Zoekmachine bots en HTTP status codes

Dankzij deze transfer protocollen, weten verschillende clients (zoals browsers en zoekmachine robots) exact wat er gaande is wanneer ze een pagina ophalen van een server. Een zoekmachine robot kan, net als een browser, een pagina op de juiste manier behandelen op basis van de HTTP status code.

Wanneer een website een reorganisatie krijgt, kan het voorkomen dat bepaalde pagina's niet meer bestaan na de reorganisatie, of dat pagina's verhuisd zijn. Wanneer zo een reorganisatie plaatsvindt, kan het juist gebruik van de status codes je helpen wanneer je website al voor de reorganisatie door bijvoorbeeld Google geïndexeerd is. Voor alle pagina's die een nieuwe URL krijgen, kun je vanaf de oude URL een redirect plaatsen naar de nieuwe URL. Google zal dit automatisch verwerken in hun database en in de resultaten, met in het ergste geval een kleine tijdelijke terugval van de positionering als gevolg.
Zou je dit niet doen, dan zal Google alle nieuwe pagina's opnieuw moeten indexeren en ranken. De oude URL's bestaan niet meer, en dus zullen deze langzaam verdwijnen uit de zoekmachine resultaten. Deze procedure heeft twee nadelen: Het zal langer duren voordat de bewuste pagina's weer op het oude ranking-niveau zitten en ondertussen komen bezoekers, die vanuit zoekmachines komen, op pagina's terecht die niet meer bestaan, ze zijn immers verhuisd zonder juiste redirect. Door juist in dit geval wel een 301 redirect te gebruiken, kom je dus de twee belangrijkste doelgroepen tegemoet: bezoekers in het algemeen en zoekmachine robots.

Belangrijk hierbij is dus de status code die je achter de schermen afgeeft. Wanneer een pagina niet bestaat, kun je eenvoudigweg een bericht laten zien aan de bezoeker dat de pagina niet is gevonden. Dit is echter niet voldoende voor een browser of zoekmachine. Laten we verder borduren op bovenstaand voorbeeld, een pagina die verhuisd is bestaat dus niet meer. Zou je voor deze pagina naast een 301 status code ook geen 404 status code meegeven, dan zal een zoekmachine nooit weten dat de pagina niet meer bestaat. Alhoewel de paginatekst wellicht uitlegt aan de bezoeker dat de pagina verwijderd is, zal een zoekmachine denken dat de pagina nog gewoon aanwezig is. Gevolg is dat de zoekmachine de tekst gaat indexeren en gaat bijwerken in zijn database. De pagina zal vervolgens gewoon aanwezig blijven in de database en wellicht ook in zoekmachine resultaten.

Hoe het niet moet

Zo moet het dus niet, een live voorbeeld is echter altijd leuker dan een beschrijving. Laten we een website pakken van een bekende onderneming, TNT Post. Ik was op zoek naar het benodigd aantal postzegels om een briefkaart naar het buitenland te sturen, en dus ging ik via Google zoeken. Daar zie ik direct al in de zogenaamde sitelinks van de TNT Post website een optie die mij verder kan helpen, en dus klik ik op "Tarieven". Helaas, ik stuit op een 403 melding, de toegang is geweigerd. Mijn eerste gedachte is dat het jammer is dat ze er geen redirect achter hebben gezet, aangezien het notabene een sitelink-verwijzing is en deze pagina via de sitelink juist veel bezoekers zullen ontvangen, die niet krijgen wat ze verwachten.

Nieuwsgierig als ik ben, controleer ik de server headers, waaronder de HTTP status code, via de Webdeveloper Toolbar add-on voor FireFox -via Information -> View Response Headers- (alternatief is een online server header checker script), deze geeft aan dat de pagina een HTTP status code 200 teruggeeft, wat zou impliceren dat de pagina bestaat. Eenmalig foutje, of een consequente fout? Daar kom ik achter zodra ik bewust een niet bestaande pagina oproep binnen het domein van tntpost.nl. Alhoewel de titel (Error 404 | TNT Post) aangeeft dat de pagina niet bestaat, blijkt de server headers wederom aan te geven dat de HTTP status code 200 is.

Dit gegeven wekt dan ook de indruk dat het systeem dat TNT Post gebruikt voor hun site, geen of geen juiste status headers verzorgt. Bij een reorganisatie van de website kan dit nadelige gevolgen hebben als je op bepaalde trefwoorden moet concurreren met andere websites. Afhankelijk van de structuur van je content management systeem kan dit zelfs tot andere negatieve zaken leiden als duplicate content of url canonicalization.