Wann eine 410 besser ist als eine 404 (und wie Sie sie wirklich einrichten)

von Luca Cavallini Technische Anleitungen
Wann eine 410 besser ist als eine 404 (und wie Sie sie wirklich einrichten)

Eine 410 ist nicht einfach eine verärgerte 404

In unserem Artikel 301 oder 404 stand die 410 nur in einer Zeile einer Entscheidungsliste, als stärkere Alternative zur 404 für einen endgültig verschwundenen Inhalt. Sie verdient eine eigene Erklärung, denn von den vier Statuscodes (301, 302, 404, 410) ist sie der einzige, der Gewissheit verlangt und nicht nur eine Feststellung. Eine 404 ist fast immer die automatische Standardantwort eines Servers oder einer Anwendung, wenn etwas nicht antwortet: Niemand „wählt“ sie Zeile für Zeile aktiv aus, sie entsteht einfach, wenn nichts passt. Eine 410 dagegen muss immer bewusst deklariert werden, durch eine Regel, die jemand beim Bau der Website absichtlich gesetzt hat, denn sie teilt etwas mit, das der Server nicht von allein wissen kann: nicht nur „Hier ist im Moment nichts“ (das sagt eine 404 schon), sondern „Hier wird nie wieder etwas sein, und das wissen wir sicher“.

Dieser Unterschied hat eine praktische Folge für das Verhalten der Suchmaschinen: Ein Crawler, der auf eine 404 stößt, hält die Möglichkeit offen, dass die URL zurückkehrt (ein vorübergehender Fehler, ein halb fertiges Deployment, ein Produkt, das wieder auf Lager kommt), und prüft diese URL in der Regel noch eine Zeit lang erneut, bevor er sie tatsächlich aus dem Index nimmt. Eine 410 ist ein bewusstes Signal für eine endgültige Löschung, und Google selbst hat mehrfach angegeben, dass es sie tendenziell schneller verarbeitet, um eine URL aus den Ergebnissen zu entfernen, auch wenn keiner der beiden Fälle sofort wirkt. Der Unterschied ist also nicht „wie schwer der Fehler ist“, sondern „wie sicher Sie sind, dass unter dieser Adresse nie wieder etwas leben wird“.

Vergleich zwischen 404 und 410: Den 404 entscheidet der Server, wenn nichts passt, und die Suchmaschine prüft erneut; der 410 ist eine eigens geschriebene Regel, nach der nie wieder etwas kommt
Ein 404 ist fast immer ein Standard; ein 410 ist immer eine Entscheidung und drückt eine Gewissheit aus, die der Server allein nicht hat.

Wann eine 410 wirklich Schaden anrichtet

Gerade weil eine 410 eine Gewissheit mitteilt, ist es der teuerste Fehler der vier Codes, sie einzusetzen, wenn diese Gewissheit nicht besteht. Zwei typische Fälle, in denen sie sich gegen Sie wendet:

  • Saisonale oder vorübergehend ausgesetzte Inhalte. Ein endgültig eingestelltes Produkt ist ein guter Kandidat für eine 410. Ein ausverkauftes Produkt, das in zwei Monaten zurückkommt, ist es nicht: Eine 410 hält die Suchmaschine davon ab, diese URL erneut zu prüfen, ausgerechnet dann, wenn Sie das einige Wochen später gern hätten. Das richtige Werkzeug bleibt in diesem Fall eine 404 (oder, wenn es wirklich vorübergehend ist und das Datum feststeht, eine 302 auf eine Informationsseite), keine 410.
  • Zu breite Regeln. Eine 410 auf ein generisches Muster oder auf eine Bedingung für den Query-String muss mit derselben Sorgfalt geschrieben werden wie eine Firewall-Regel: Eine zu allgemeine Bedingung kann die 410 für legitime URLs auslösen, die nur einen Teil des Musters gemeinsam haben, und damit echtem Traffic endgültig die Tür schließen statt nur dem Traffic, den Sie stoppen wollten. Anders als bei einer 301, wo ein falsches Ziel den Besucher immerhin irgendwohin schickt, schließt eine fehlerhafte 410 einfach die Tür, und wenn es die falsche Tür war, merkt es nur der, der dagegenläuft.
Drei Fälle: dauerhaft eingestelltes Produkt passt zu 410; ausverkauftes Produkt, das zurückkommt, besser 404 oder 302; zu breite Regel sperrt echten Traffic
Ein 410 ist nur dann richtig, wenn sicher ist, dass unter dieser Adresse nie wieder etwas kommt.

Wie eine gut eingerichtete 410 tatsächlich aussieht

In unserem eigenen Weiterleitungsmodul wählt man die 410 im Menü für den Regeltyp, neben der 301 und der 302, und für diesen Regeltyp wird die Zieladresse nicht benötigt und ignoriert: Es gibt kein „wohin schicken“ für den Besucher, nur ein „hier ist nichts mehr, endgültig“. Technisch interessant ist die Stelle, an der die Antwort erzeugt wird: Sie muss so früh wie möglich im Lebenszyklus der Anfrage ausgehen, bevor die Anwendung das Theme aufbaut, das Produkt aus der Datenbank holt oder das Rendering der Seite vorbereitet, sonst haben Sie trotzdem die ganze Arbeit verschwendet, die eine 410 vermeiden soll. Eine korrekte Antwort enthält drei Elemente, die oft vergessen werden, wenn eine 410 von Hand in eine Konfigurationsdatei geschrieben wird:

  • Einen echten HTTP-Status 410 Gone und keine 200 mit dem Text „Produkt nicht verfügbar“ (derselbe Soft-404-Fehler, der im vorigen Artikel schon behandelt wurde und hier genauso gilt).
  • Einen Header X-Robots-Tag: noindex, der das Signal für Crawler verstärkt, die diesen Header unabhängig vom Statuscode lesen.
  • Einen minimalen Seiteninhalt, in der Sprache des Besuchers, statt einer weißen Seite: Auf eine 410 kann auch ein echter Mensch stoßen, der einem alten Link folgt, nicht nur ein Crawler.
Schema: Die 410-Regel beantwortet die Anfrage sofort und überspringt Theme, Produkt aus der Datenbank und Rendern; die Antwort enthält HTTP 410 Gone, den Header X-Robots-Tag noindex und einen kurzen übersetzten Inhalt
Der 410 muss so früh wie möglich im Ablauf der Anfrage greifen, sonst bezahlt man trotzdem die Arbeit, die er vermeiden soll.

Ein realer Fall: ein Crawler, der an einem vergifteten Parameter im Kreis lief

In unserem eigenen Shop lief ein Crawler (der von Meta) im Kreis an URLs der Form /login?back=..., die im Wert des Parameters noch die alte Domain des Shops aus der Zeit vor einem Adresswechsel enthielten: mehr als 36.000 Anfragen in einer einzigen Nacht, mehr als 90 % des gesamten Traffics, den der Server erhielt, jede mit einer 200-Antwort und vollständigem Rendering der Seite beantwortet, also mit denselben CPU-Kosten wie eine echte Anfrage. Das Problem war nicht die URL selbst (/login ist eine völlig legitime Adresse), sondern die Kombination mit genau diesem Parameterwert, den kein echter Besucher je erzeugen würde.

Wir haben geprüft, dass eine einzige 410-Regel mit einer Bedingung für den Query-String genau diesen Fall löst, ohne den Webserver anzufassen und ohne den legitimen Traffic zu berühren: Die Regel greift nur, wenn der Parameter back die alte Domain enthält, nicht bei jeder Anfrage an /login. Testergebnisse, auf drei verschiedenen PrestaShop-Versionen:

  • /login?back=http%3A%2F%2Fold-domain.example%2Fx liefert 410
  • /login?back=https%3A%2F%2Fold-domain.example%2Flogin liefert 410
  • /login?back=/my-account (legitimer Traffic) liefert weiterhin 200, unverändert
Der Fall: über 36.000 Anfragen in einer Nacht vom Meta-Crawler; /login mit back samt alter Domain liefert zweimal 410, /login?back=/my-account bleibt 200
Die Regel sperrt nicht /login, sondern nur die genaue Kombination mit der alten Domain im Parameter; echter Traffic läuft wie vorher.

Das ist das klarste Beispiel dafür, was eine gut gebaute 410 von einer hastig gemachten 410 unterscheidet: Die Regel sagt nicht „/login sperren“, sondern „nur genau die Kombination sperren, von der wir wissen, dass sie das Problem verursacht“, und sie prüft diese Bedingung, bevor sie auch nur eine Zeile der Seite aufbaut.

Screenshot des Moduls SEO-Weiterleitungen in der PrestaShop-9-Demo: neue 410-Regel für /login, die nur greift, wenn der Parameter back die alte Domain enthält
Dieselbe Regel im Modul SEO-Weiterleitungen unserer PrestaShop-9-Demo: Typ 410, kein Ziel, Bedingung auf den Parameter back (Back Office auf Italienisch).

Kurz gesagt

Die 404 ist fast immer ein Standardwert, die 410 ist immer eine bewusste Entscheidung, und sie sollte nur eingesetzt werden, wenn wirklich sicher ist, dass die URL nie wiederkommt. Gut gemacht, ist sie ein echter HTTP-Status, der so früh wie möglich im Lebenszyklus der Anfrage erzeugt wird, mit dem passenden Robots-Header und ohne die Arbeit zu verschwenden, die sie vermeiden soll; mit einer zu breiten Regel kann sie dagegen einem Traffic, der legitim war, endgültig die Tür schließen. Wer diese Regeln verwalten möchte, ohne die Serverkonfiguration anzufassen, findet in einem Modul wie cll_seoredirect eine Möglichkeit, aber das Kriterium, wann eine 410 die richtige Wahl ist, bleibt unabhängig vom Werkzeug dasselbe.

SEO-Weiterleitungen - Verwaltung von 301/302/404 (SEO Redirects)Verwalten Sie 301/302-Weiterleitungen (einfach, Wildcard oder sichere Regex), überwachen Sie 404er und…49,99 €Produkt ansehen

Kommentar hinterlassen

Kommentare werden vor der Veröffentlichung moderiert.

← Blog

Lade ...
Zum Seitenanfang