↑ ↓ auswählen, Enter öffnen, Esc schließen

HTTP-Statuscodes

Was ein Statuscode bedeutet, woran es auf dem Server meist liegt und was er für Google heißt. Tippe einen Code oder ein Stichwort ins Filterfeld.

Statuscodes filtern

39 Codes

Statuscode einer URL prüfen
curl -s -o /dev/null -w "%{http_code}\n" https://example.de/seite/

1xx: Information

Zwischenmeldungen. Sie tauchen in Logs selten auf und sind für SEO ohne Bedeutung.

CodeBedeutungTypische Ursache auf dem ServerSEO-Auswirkung
100Continue
Der Server hat die Kopfzeilen erhalten, der Client darf den Body schicken.
Client sendet Expect: 100-continue, etwa curl bei großen Uploads.Keine.
101Switching Protocols
Wechsel des Protokolls, typisch auf WebSocket.
WebSocket-Verbindung. Hinter nginx braucht es proxy_set_header Upgrade und Connection.Keine.
103Early Hints
Vorab-Hinweise auf Ressourcen, bevor die eigentliche Antwort fertig ist.
Server oder CDN schickt Link: rel=preload früh mit.Indirekt positiv: kann das Laden beschleunigen und damit LCP verbessern.

2xx: Erfolg

Die Anfrage wurde erfolgreich verarbeitet.

CodeBedeutungTypische Ursache auf dem ServerSEO-Auswirkung
200OK
Alles in Ordnung, die Antwort enthält den Inhalt.
Normalfall.Seite kann indexiert werden. Achtung bei Fehlerseiten mit 200: Google wertet sie als Soft-404.
201Created
Eine Ressource wurde angelegt.
REST-APIs nach POST, etwa die WordPress-REST-API.Keine, betrifft APIs.
204No Content
Erfolg ohne Inhalt.
APIs, Tracking-Endpunkte, admin-ajax.php in manchen Fällen.Keine. Als Antwort auf eine normale Seite wäre 204 falsch.
206Partial Content
Nur ein Teil der Datei wird geliefert.
Range-Anfragen bei Videos, Downloads mit Fortsetzung.Keine.

3xx: Umleitung

Der Inhalt liegt woanders. Für SEO die wichtigste Gruppe nach 4xx.

CodeBedeutungTypische Ursache auf dem ServerSEO-Auswirkung
301Moved Permanently
Dauerhaft umgezogen, neue Adresse steht im Location-Header.
HTTPS- und www-Weiterleitung, geänderte URLs, Domainumzug.Standard für Umzüge. Signale gehen auf das Ziel über, Google indexiert die neue URL. Ketten vermeiden.
302Found
Vorübergehend woanders.
Temporäre Umleitung, Login-Weiterleitungen, viele CMS-Standardregeln.Alte URL bleibt im Index. Für dauerhafte Umzüge 301 verwenden, sonst dauert die Umstellung länger.
303See Other
Ergebnis unter anderer Adresse per GET abrufen.
Weiterleitung nach Formularversand (Post/Redirect/Get).Kaum relevant, wird wie eine temporäre Umleitung behandelt.
304Not Modified
Inhalt unverändert, der Client nutzt seinen Cache.
Antwort auf If-Modified-Since oder If-None-Match.Positiv: spart Crawl-Budget und Bandbreite. Setzt korrekte Last-Modified- oder ETag-Header voraus.
307Temporary Redirect
Wie 302, aber die Methode (etwa POST) bleibt erhalten.
Temporäre Umleitung, im Browser auch durch HSTS intern erzeugt.Wie 302: alte URL bleibt im Index.
308Permanent Redirect
Wie 301, aber die Methode bleibt erhalten.
Dauerhafte Umleitung, oft bei APIs und manchen Frameworks.Für Google gleichwertig zu 301.

4xx: Fehler beim Client

Die Anfrage war nicht erfüllbar, meist wegen falscher URL oder fehlender Berechtigung.

CodeBedeutungTypische Ursache auf dem ServerSEO-Auswirkung
400Bad Request
Die Anfrage ist fehlerhaft.
Kaputte Header, zu große Cookies (nginx: Request Header Or Cookie Too Large), HTTP auf einem HTTPS-Port.Seite wird nicht indexiert. Bei vielen 400ern Logs prüfen.
401Unauthorized
Anmeldung erforderlich.
HTTP-Basic-Auth, passwortgeschütztes Verzeichnis in Plesk, API ohne Token.Seite wird nicht indexiert. Für Staging-Umgebungen genau richtig.
403Forbidden
Zugriff verweigert, auch mit Anmeldung.
Falsche Dateirechte oder Besitzer, fehlende index-Datei bei abgeschaltetem Verzeichnislisting, ModSecurity, deny-Regel, Fail2ban.Wie 404, wird nicht indexiert. Wenn Googlebot 403 bekommt, Firewall und Bot-Schutz prüfen.
404Not Found
Unter dieser Adresse gibt es nichts.
Gelöschte oder umbenannte Seite, Tippfehler im Link, fehlende Rewrite-Regel (WordPress-Permalinks).Normal und unschädlich für die übrige Seite. URL fällt nach einiger Zeit aus dem Index. Wichtige alte URLs per 301 umleiten.
405Method Not Allowed
Die Methode ist für diese Adresse nicht erlaubt.
POST auf eine statische Datei, gesperrte Methoden, falsch konfigurierte API.Keine, solange normale GET-Aufrufe funktionieren.
408Request Timeout
Der Client hat zu lange gebraucht.
Langsame Verbindung, Keepalive-Verbindungen, die der Server schließt.Einzelne sind normal. Gehäuft ein Zeichen für Netzwerk- oder Lastprobleme.
410Gone
Dauerhaft entfernt, kommt nicht wieder.
Bewusst gelöschte Inhalte, etwa nach einem Hack mit Spam-Seiten.Google entfernt die URL etwas schneller als bei 404. Ideal, um Spam-URLs nach einem Hack loszuwerden.
413Content Too Large
Die hochgeladene Datei ist zu groß.
nginx client_max_body_size (Standard 1 MB), PHP upload_max_filesize und post_max_size.Keine, betrifft Uploads.
414URI Too Long
Die URL ist zu lang.
Endlos wachsende Query-Strings durch fehlerhafte Weiterleitungen oder Filter.Oft ein Hinweis auf eine Redirect-Schleife, die Parameter anhängt.
429Too Many Requests
Zu viele Anfragen in kurzer Zeit.
Rate Limiting in nginx (limit_req), WAF, CDN, API-Limits.Googlebot drosselt das Crawling. Dauerhaft 429 für Googlebot kann zur Deindexierung führen.
451Unavailable For Legal Reasons
Aus rechtlichen Gründen gesperrt.
Geoblocking oder behördliche Sperre.Wird wie ein Fehler behandelt, die Seite nicht indexiert.

5xx: Fehler auf dem Server

Der Server konnte eine gültige Anfrage nicht beantworten. Für SEO kritisch, wenn sie länger anhalten.

CodeBedeutungTypische Ursache auf dem ServerSEO-Auswirkung
500Internal Server Error
Allgemeiner Fehler auf dem Server.
PHP-Fatal-Error, Syntaxfehler in der .htaccess, fehlerhaftes Plugin, falsche Rechte bei CGI.Kurzzeitig harmlos. Hält der Fehler Tage an, nimmt Google die Seiten aus dem Index.
501Not Implemented
Der Server kennt die Methode nicht.
Unbekannte HTTP-Methode, alte Software.Selten relevant.
502Bad Gateway
Der vorgeschaltete Server bekam eine ungültige Antwort.
nginx erreicht PHP-FPM oder Apache nicht: Dienst abgestürzt, Socket falsch, Prozess wegen Speicher beendet.Wie 500. Googlebot reduziert das Crawling, bei Dauer droht Deindexierung.
503Service Unavailable
Vorübergehend nicht verfügbar.
Wartungsmodus (WordPress .maintenance), Überlastung, keine freien PHP-FPM-Worker.Richtiger Code für Wartung, am besten mit Retry-After-Header. Google wartet dann ab. Nicht länger als ein bis zwei Tage.
504Gateway Timeout
Der vorgeschaltete Server hat zu lange nicht geantwortet.
Langsame PHP-Skripte oder Datenbankabfragen, proxy_read_timeout bzw. fastcgi_read_timeout zu knapp.Wie 500. Zusätzlich ein deutliches Zeichen für schlechte Antwortzeiten.
508Loop Detected / Resource Limit
Offiziell: Endlosschleife erkannt. Bei LiteSpeed mit CloudLinux: Ressourcenlimit des Kontos erreicht.
Limits für Prozesse oder Speicher (LVE) überschritten, Endlosschleifen bei WebDAV.Wie 500. Auf Shared Hosting ein Zeichen, dass das Paket zu klein ist.

nginx- und Cloudflare-Spezialcodes

Diese Codes stehen in keinem Standard, tauchen aber in Logs und Fehlerseiten ständig auf.

CodeBedeutungTypische Ursache auf dem ServerSEO-Auswirkung
444No Response (nginx)
nginx schließt die Verbindung ohne Antwort.
Bewusst gesetzt mit return 444;, etwa für Anfragen ohne passenden Host oder Bot-Abwehr.Für normale Seiten nie verwenden. Für Müll-Anfragen gut geeignet.
499Client Closed Request (nginx)
Der Client hat die Verbindung geschlossen, bevor nginx antworten konnte.
Besucher bricht ab, weil die Seite zu langsam ist, Load Balancer mit kurzem Timeout, Monitoring.Erscheint nur im Log. Viele 499er bedeuten: Die Seite antwortet zu langsam.
520Web Server Returned an Unknown Error (Cloudflare)
Der Ursprungsserver hat eine leere oder unerwartete Antwort geschickt.
Absturz von PHP oder Webserver, zu große Header, Verbindung vom Server zurückgesetzt.Wie 500.
521Web Server Is Down (Cloudflare)
Cloudflare erreicht den Ursprungsserver nicht.
Webserver gestoppt, Firewall oder Fail2ban sperrt Cloudflare-IPs.Wie 500, Seite für alle nicht erreichbar.
522Connection Timed Out (Cloudflare)
Verbindungsaufbau zum Ursprungsserver dauert zu lange.
Server überlastet, Firewall verwirft Pakete, falsche IP im DNS bei Cloudflare.Wie 500.
523Origin Is Unreachable (Cloudflare)
Ursprungsserver ist nicht erreichbar.
Falscher DNS-Eintrag, Routing-Problem, Server offline.Wie 500.
524A Timeout Occurred (Cloudflare)
Verbindung steht, aber der Server antwortet nicht innerhalb von 100 Sekunden.
Lang laufende PHP-Skripte, Exporte, Importe, langsame Datenbank.Wie 504. Lange Aufgaben besser per Cron oder Warteschlange erledigen.
525SSL Handshake Failed (Cloudflare)
TLS-Verbindung zum Ursprungsserver gescheitert.
Kein oder falsches Zertifikat auf dem Server, keine gemeinsamen Cipher.Wie 500.
526Invalid SSL Certificate (Cloudflare)
Zertifikat auf dem Ursprungsserver ist ungültig.
Abgelaufenes oder selbst signiertes Zertifikat im Modus „Full (strict)“.Wie 500. Zertifikat erneuern, etwa per Let’s Encrypt in Plesk.

Und ja, es gibt auch 418 I'm a teapot. Der Code stammt aus einem Aprilscherz-RFC von 1998 und wird von manchen Servern als Scherz oder Bot-Abwehr zurückgegeben. Mit echten Fehlern hat er nichts zu tun.

Statuscodes mit curl prüfen

Der Browser verrät den Statuscode nur in den Entwicklerwerkzeugen und speichert Weiterleitungen zwischen. Mit curl bekommst du die ungeschönte Antwort des Servers. Nur die Kopfzeilen inklusive Statuszeile:

curl -sI https://example.de/seite/

Eine ganze Liste von URLs auf einmal, etwa nach einem Umzug (eine URL pro Zeile in urls.txt):

while read -r u; do
  printf '%s %s\n' "$(curl -s -o /dev/null -w '%{http_code}' "$u")" "$u"
done < urls.txt

Welche Codes dein Server tatsächlich ausliefert, zeigt eine Auswertung des Access-Logs. Der Pfad gilt für Plesk, die Spalte 9 für das übliche Combined-Logformat:

awk '{print $9}' /var/www/vhosts/example.de/logs/access_ssl_log | sort | uniq -c | sort -rn

404 oder 410?

Beide sagen „gibt es nicht“. 404 lässt offen, ob die Seite wiederkommt, 410 sagt ausdrücklich, dass sie dauerhaft weg ist. Google behandelt beide ähnlich, entfernt 410-URLs aber meist etwas schneller aus dem Index. Für normale gelöschte Seiten ist 404 völlig in Ordnung. 410 lohnt sich, wenn viele unerwünschte URLs schnell verschwinden sollen, typisch nach einem Hack mit eingeschleusten Spam-Seiten. Hat eine alte Seite einen inhaltlichen Nachfolger, ist eine 301-Weiterleitung besser als beides.

Soft-404: Fehlerseite mit Status 200

Eine Soft-404 ist eine Seite, die „nicht gefunden“ anzeigt, aber mit Status 200 ausgeliefert wird. Google erkennt solche Seiten und meldet sie in der Search Console. Häufige Ursachen: eigene Fehlerseiten, die per Weiterleitung statt per ErrorDocument eingebunden sind, leere Kategorie- oder Suchseiten, und das pauschale Umleiten aller alten URLs auf die Startseite. Prüfe mit curl, ob eine nicht existierende URL wirklich 404 liefert.

Wartung richtig ankündigen: 503 mit Retry-After

Während Wartungsarbeiten sollte der Server 503 Service Unavailable liefern, nicht 200 mit einem Hinweistext und nicht 404. Der Header Retry-After sagt Suchmaschinen, wann sie es wieder versuchen sollen (in Sekunden oder als Datum). So bleibt das Ranking unangetastet. Ein Beispiel für nginx:

# nginx (Plesk: Zusätzliche nginx-Direktiven): Wartungsmodus,
# solange die Datei .maintenance-on im Webroot liegt
if (-f $document_root/.maintenance-on) {
    return 503;
}
add_header Retry-After 3600 always;

WordPress liefert während Updates selbst einen 503 mit Retry-After, solange die Datei .maintenance im Webroot liegt. Bleibt sie nach einem abgebrochenen Update liegen, ist die Seite dauerhaft im Wartungsmodus: Datei löschen, fertig.

Ein 503 über mehr als ein bis zwei Tage wertet Google als dauerhaften Fehler, dann fallen Seiten aus dem Index. Länger dauernde Umbauten besser auf einer Staging-Umgebung erledigen.

5xx-Fehler auf dem Server eingrenzen

  • 500: zuerst das Fehlerlog der Domain (/var/www/vhosts/example.de/logs/error_log in Plesk) und das PHP-Log. Bei WordPress hilft WP_DEBUG_LOG.
  • 502: läuft PHP-FPM? systemctl status plesk-php83-fpm (Version anpassen), dazu journalctl -u plesk-php83-fpm --since "1 hour ago".
  • 503 und 504: sind alle PHP-FPM-Worker belegt? Im FPM-Log steht dann server reached pm.max_children. Langsame Abfragen findet das MySQL-Slow-Log.

Als Lesezeichen speichern: Mit Strg + D (Mac: ⌘ + D) hast du die Statuscode-Referenz beim nächsten Fehler im Log sofort parat.

Erst lesen, dann ausführen.

Die Befehle auf myline.de greifen direkt in Server, Dateien und Datenbanken ein. Ein falscher Pfad oder Platzhalter kann Daten unwiderruflich löschen oder einen Server unerreichbar machen.

  • Alle Befehle werden ohne Gewähr bereitgestellt und sind nicht auf jedem System getestet.
  • Vor dem Ausführen verstehen, was ein Befehl tut, und jeden Platzhalter prüfen.
  • Vorher ein Backup anlegen und möglichst zuerst auf einem Testsystem ausprobieren.
  • Die Ausführung erfolgt auf eigene Verantwortung. Eine Haftung für Schäden ist ausgeschlossen, soweit gesetzlich zulässig.