Wanneer een 410 beter is dan een 404 (en hoe u hem echt invoert)
Een 410 is niet zomaar een boze 404
In ons artikel 301 of 404 kwam de 410 voor op één regel van een beslislijst, als het sterkere alternatief voor de 404 bij inhoud die voorgoed is verdwenen. Hij verdient zijn eigen uitleg, omdat hij van de vier statuscodes (301, 302, 404, 410) de enige is die zekerheid vraagt en niet alleen een vaststelling. Een 404 is bijna altijd het automatische standaardantwoord van een server of applicatie wanneer iets niet reageert: niemand “kiest” hem actief regel voor regel, hij komt gewoon wanneer niets overeenkomt. Een 410 daarentegen moet altijd bewust worden opgegeven, met een regel die iemand met opzet heeft gezet bij het bouwen van de site, omdat hij iets meedeelt wat de server niet zelf kan weten: niet alleen “er is hier op dit moment niets” (dat zegt een 404 al), maar “hier zal nooit meer iets zijn, en dat weten we zeker”.
Dit verschil heeft een praktisch gevolg voor het gedrag van zoekmachines: een crawler die op een 404 stuit, houdt de mogelijkheid open dat de URL terugkomt (een tijdelijke fout, een half uitgevoerde deployment, een product dat weer op voorraad komt) en controleert die URL meestal nog een tijd opnieuw voordat hij hem echt uit de index haalt. Een 410 is een bewust signaal van definitieve verwijdering, en Google heeft zelf meermaals aangegeven dat het die doorgaans sneller verwerkt om een URL uit de resultaten te halen, ook al is geen van beide gevallen onmiddellijk. Het verschil is dus niet “de ernst van de fout”, maar “hoe zeker u bent dat er op dit adres nooit meer iets zal leven”.

Wanneer een 410 echt schade aanricht
Juist omdat een 410 een zekerheid meedeelt, is het gebruik ervan zonder die zekerheid de duurste fout van de vier codes. Twee typische gevallen waarin hij zich tegen u keert:
- Seizoensgebonden of tijdelijk opgeschorte inhoud. Een product dat voorgoed uit het assortiment is, is een goede kandidaat voor een 410. Een uitverkocht product dat over twee maanden terugkomt, is dat niet: een 410 ontmoedigt de zoekmachine om die URL opnieuw te controleren, juist op het moment waarop u dat enkele weken later wel zou willen. In dat geval blijft het juiste gereedschap een 404 (of, als het echt tijdelijk is met een bekende datum, een 302 naar een informatiepagina), geen 410.
- Te brede regels. Een 410 op een generiek patroon of op een voorwaarde voor de query string moet met dezelfde zorg worden geschreven als een firewallregel: een te algemene voorwaarde kan de 410 activeren op legitieme URL’s die maar een deel van het patroon delen, waardoor de deur definitief dicht gaat voor echt verkeer in plaats van alleen voor het verkeer dat u wilde stoppen. Anders dan bij een 301, waar een fout in de bestemming de bezoeker toch ergens naartoe stuurt, sluit een foute 410 gewoon de deur, en als het niet de juiste deur was, is degene die ertegenaan loopt de enige die het merkt.

Hoe een goed ingevoerde 410 er echt uitziet
In onze eigen redirectmodule kiest u de 410 in het menu met het regeltype, naast de 301 en de 302, en voor dit regeltype is het bestemmingsadres niet nodig en wordt het genegeerd: er is geen “waarheen sturen” voor de bezoeker, alleen een “hier is niets meer, definitief”. Het technisch interessante deel is de plek waar het antwoord wordt gegenereerd: het moet zo vroeg mogelijk in de levenscyclus van het verzoek vertrekken, voordat de applicatie het thema opbouwt, het product uit de database haalt of de weergave van de pagina voorbereidt. Anders hebt u toch al het werk verspild dat een 410 juist moet voorkomen. Een correct antwoord bevat drie elementen die vaak vergeten worden wanneer een 410 met de hand in een configuratiebestand wordt geschreven:
- Een echte HTTP-status
410 Gone, en geen 200 met de tekst “product niet beschikbaar” (dezelfde soft 404-fout als in het vorige artikel, die hier ongewijzigd geldt). - Een header
X-Robots-Tag: noindex, die het signaal versterkt voor crawlers die deze header lezen, los van de statuscode. - Een minimale paginatekst, vertaald in de taal van de bezoeker, in plaats van een witte pagina: een 410 blijft een antwoord waar een echt mens op kan belanden door op een oude link te klikken, niet alleen iets wat een crawler ziet.

Een echt geval: een crawler in een lus op een vergiftigde parameter
In onze eigen winkel bleef een crawler (die van Meta) in een lus hangen op URL’s van de vorm /login?back=... die in de waarde van de parameter nog het oude domein van de winkel bevatten, van vóór een adreswijziging: meer dan 36.000 verzoeken in één nacht, meer dan 90% van al het verkeer dat de server ontving, elk beantwoord met een 200 en een volledige weergave van de pagina, dus dezelfde processorbelasting als een echt verzoek. Het probleem was niet de URL zelf (/login is een volkomen legitiem adres), maar de combinatie met die precieze parameterwaarde, die geen enkele echte bezoeker ooit zou voortbrengen.
We hebben gecontroleerd dat één enkele 410-regel met een voorwaarde op de query string precies dit geval oplost, zonder de webserver aan te raken en zonder het legitieme verkeer te raken: de regel wordt alleen geactiveerd wanneer de parameter back het oude domein bevat, niet bij elk verzoek naar /login. Testresultaten, op drie verschillende versies van PrestaShop:
/login?back=http%3A%2F%2Fold-domain.example%2Fxgeeft 410/login?back=https%3A%2F%2Fold-domain.example%2Flogingeeft 410/login?back=/my-account(legitiem verkeer) geeft nog steeds 200, ongewijzigd

Dit is het duidelijkste voorbeeld van wat een goed gebouwde 410 onderscheidt van een haastig gemaakte 410: de regel zegt niet “blokkeer /login”, maar “blokkeer alleen de exacte combinatie waarvan we weten dat ze problemen geeft”, en ze controleert die voorwaarde voordat ook maar één regel van de pagina wordt opgebouwd.

Kortom
De 404 is bijna altijd een standaardwaarde, de 410 is altijd een bewuste keuze, en hij mag alleen worden gebruikt wanneer er echte zekerheid bestaat dat de URL nooit terugkomt. Goed gedaan is het een echte HTTP-status die zo vroeg mogelijk in de levenscyclus van het verzoek wordt gegenereerd, met de bijbehorende robots-header, zonder het werk te verspillen dat hij moet voorkomen; met een te brede regel kan hij de deur definitief sluiten voor verkeer dat legitiem was. Wie deze regels wil beheren zonder de serverconfiguratie aan te raken, kan een module als cll_seoredirect overwegen, maar het criterium om te beslissen wanneer een 410 de juiste keuze is, blijft hetzelfde, welk gereedschap u ook gebruikt.
Installatie- en configuratiegids van de module
SEO-redirects - beheer van 301/302/404Beheer 301/302-redirects (gewoon pad, jokerteken of veilige regex), volg 404’s en zet ze met één klik om in re…€ 49,99Bekijk product