technical

Echte 404 ausliefern, keine Soft-404

MetricSpot ruft eine zufällige, nicht existierende URL ab und prüft den Status. Soft-404s (200 OK auf einer "nicht gefunden"-Seite) blähen den Index auf und verwirren Crawler.

Was diese Prüfung macht

Schickt eine Anfrage an eine randomisierte URL auf deiner Domain, die fast sicher nicht existiert (etwa /__metricspot_probe_${random}). Die Prüfung fällt durch, wenn:

  • Der Server 200 OK mit einer „nicht gefunden”-Seite zurückgibt (ein Soft 404 — der schlimmste Fall).
  • Der Server 5xx statt 404 zurückgibt.
  • Der Server 200 mit einer Weiterleitung zur Startseite zurückgibt (in Googles Augen ebenfalls ein Soft 404).

Sie besteht, wenn der Server eine echte 404 (oder 410 Gone) mit einer nützlichen Fehlerseite zurückgibt.

Warum es wichtig ist

Soft-404s verwirren Crawler und verfälschen deinen Index.

  • Index-Bloat. Google indexiert eine Soft-404-Seite wie jede normale 200er-Seite. Eine Site mit einem fehlerhaften CMS, das für Tippfehler 200 zurückgibt, kann tausende Müll-URLs im Index landen.
  • Verschwendetes Crawl-Budget. Googlebot besucht Soft-404-URLs immer wieder auf der Suche nach neuen Inhalten und frisst so das Crawl-Budget echter Seiten auf.
  • Search-Console-Fehler. Search Console markiert Soft-404-Seiten irgendwann als Soft 404-Fehler und hört auf, sie zu indexieren — aber die Aufräumarbeit dauert Wochen.
  • UX. Eine echte 404-Seite kann verwandte Inhalte vorschlagen, Nutzer zur Suche leiten und den Besuch retten. Eine 200-Weiterleitung zur Startseite lässt sie ratlos zurück, ohne Signal, dass die ursprüngliche URL kaputt war.

Wie du es behebst

Konfiguriere deinen Server so, dass er für unbekannte Pfade 404 Not Found zurückgibt, und rendere eine hilfreiche Seite obendrauf.

nginx — eine eigene Fehlerseite definieren, die weiterhin 404 zurückgibt:

server {
  error_page 404 /404.html;

  location = /404.html {
    internal;
  }
}

Apache (.htaccess):

ErrorDocument 404 /404.html

Next.js (App Router):

// app/not-found.tsx
export default function NotFound() {
  return (
    <main>
      <h1>404 — Seite nicht gefunden</h1>
      <p>Versuche die <a href="/">Startseite</a> oder die <a href="/search/">Suche</a>.</p>
    </main>
  );
}

Next.js liefert diese Seite automatisch mit Statuscode 404 aus.

Astro:

---
// src/pages/404.astro
---
<html>
  <head><title>404 — Nicht gefunden</title></head>
  <body>
    <h1>404 — Seite nicht gefunden</h1>
    <a href="/">Zurück zur Startseite</a>
  </body>
</html>

Astro baut daraus ein statisches 404.html, das nginx automatisch mit dem richtigen Statuscode ausliefert.

WordPress — Themes liefern ein 404.php-Template mit. Wenn deins stattdessen zur Startseite umleitet, prüfe functions.php auf ein fehlgeleitetes wp_redirect() und entferne es.

Mach die Seite nützlich. Eine echte 404 sollte:

  • Ehrlich sein — die Überschrift lautet „Seite nicht gefunden”, nicht „Willkommen zurück”.
  • 3–4 beliebte Seiten vorschlagen (sitewide Navigation zählt nicht; biete konkrete Links).
  • Suche enthalten, falls vorhanden.
  • Zum Branding der Site passen, damit der Nutzer weiß, dass er noch bei dir ist.

Selbst auditieren:

curl -sI https://yourdomain.com/__definitely_does_not_exist

Die erste Zeile muss HTTP/1.1 404 Not Found (oder HTTP/2 404) sein. Alles andere fällt durch.

Häufig gestellte Fragen

Soll ich 404er auf die Startseite umleiten?

Nein. Ein 301-Redirect zur Startseite sagt Google „diese URL ist nach / umgezogen” — was eine Lüge ist. Der Nutzer sieht die Startseite und weiß nicht, dass die ursprüngliche URL falsch war; die URL wird jetzt als Duplikat der Startseite „indexiert”. Gib immer eine echte 404 zurück.

Was ist der Unterschied zwischen 404 und 410?

404 Not Found heißt „wir konnten diese Ressource gerade nicht finden”. 410 Gone heißt „diese Ressource existierte, wurde aber dauerhaft entfernt”. Google entfernt 410-URLs schneller aus dem Index als 404-URLs. Verwende 410 für absichtlich gelöschte Inhalte; 404 ist okay für Tippfehler und Bots, die nach Schwachstellen scannen.

Meine 404-Seite gibt 200 zurück — wie behebe ich das?

Zwei häufige Ursachen: (1) dein CMS nutzt eine Wildcard-Route, die alles abfängt — auch 404er — und mit 200 ausliefert; (2) dein CDN hat eine frühe kaputte Antwort mit Status 200 gecached. Für (1) im Not-Found-Handler des Frameworks explizit res.status(404) setzen. Für (2) den CDN-Cache leeren und direkt gegen den Origin verifizieren.

Quellen

Zuletzt aktualisiert 2026-05-11