404 Not Found
Verwendung
Wenn ein 404 Not Found-Fehler eintrifft, gibt der Status nicht an, ob die Ressource dauerhaft nicht verfügbar, vorübergehend nicht verfügbar ist oder nie existiert hat. Dieser Fehler entsteht meist durch vertippte URLs und begegnet Entwicklern häufig, die mit einer Menge noch in Arbeit befindlicher Ressourcen arbeiten.
Links auf Adressen, die 404 Not Found zurückgeben, werden gemeinhin als tote Links oder defekte Links bezeichnet. Der Status wurde auch verwendet, wenn ein Server nicht bereit ist einzuräumen, dass eine Ressource existiert.
Wenn der Server weiß, dass die Ressource unter der angegebenen Adresse einmal existiert hat, aber dauerhaft entfernt wurde, ist ein 410 Gone-Status aussagekräftiger.
Da Endnutzer diesem Fehler so häufig begegnen, verwenden viele Server eine eigene Fehlerseite, die für ihre Site beschreibend und relevant ist.
Hinweis
Ein 404 bedeutet nicht, dass der Client blockiert ist. Eine Blockierung führt zu 403 Forbidden. Manche Server geben 404 statt 403 zurück, um die Existenz einer Ressource zu verbergen. 404 zeigt keine Dauerhaftigkeit an. Die Ressource kann später auftauchen. Für eine dauerhafte Entfernung gibt der Server 410 Gone zurück.
SEO-Auswirkung
Suchmaschinen wie Google indexieren keine URL, die einen 404-Status zurückgibt. Zuvor indexierte URLs, die diesen Statuscode zurückgeben, werden aus den Suchergebnissen entfernt. Seiten, die diesen Code zurückgeben, verbrauchen kein Crawl-Budget. Google behandelt 404 und 410 identisch. Beide entfernen Inhalte mit derselben Geschwindigkeit aus dem Index. Bingbot wertet 404 als Signal für eine Inhaltsentfernung und nimmt die URL aus dem Index, nachdem der Status bei einem späteren erneuten Crawl bestätigt wurde. Statt eines korrekten 404 ein 200 mit Fehlerinhalt zurückzugeben, erzeugt einen Soft 404, der Crawl-Budget verschwendet und das Vertrauen in die Serversignale der Site untergräbt.
Beispiel
Der Client fordert eine Ressource an, und der Server antwortet mit 404 Not Found, weil die Ressource unter der angegebenen Adresse nicht existiert.
Anfrage
GET /documents/secret-formula.pdf HTTP/1.1
Host: example.com
Antwort
HTTP/1.1 404 Not Found
Content-Type: text/html
Content-Length: 216
<html>
<head>
<title>Resource Not Found</title>
</head>
<body>
<p>The requested resource was not found.
Check the spelling of the address.</p>
</body>
</html>
Behebung
Ein 404 Not Found bedeutet, dass unter der angeforderten Adresse keine Ressource existiert.
Prüfen Sie Schreibweise und Pfad der URL. Tippfehler im Pfad, im Dateinamen oder im Query-String sind die häufigste Ursache. Kontrollieren Sie jedes Segment der Adresse doppelt. Kopieren Sie den Pfad direkt aus dem Quell-Link, statt ihn manuell einzutippen.
Achten Sie auf Groß- und Kleinschreibung. Linux-basierte Server behandeln /Page und /page als unterschiedliche Pfade. Übernehmen Sie die exakte Schreibweise der ursprünglichen URL. Windows-basierte IIS-Server unterscheiden standardmäßig nicht zwischen Groß- und Kleinschreibung, daher deutet ein 404 auf IIS auf eine tatsächlich fehlende Ressource hin.
Achten Sie auf einen fehlenden abschließenden Schrägstrich. Manche Server unterscheiden zwischen /path und /path/. Fügen Sie den abschließenden Schrägstrich hinzu oder entfernen Sie ihn und versuchen Sie es erneut. nginx und Apache behandeln abschließende Schrägstriche je nach try_files- und DirectorySlash-Konfiguration unterschiedlich.
Bestätigen Sie, dass die Ressource auf dem Server existiert. Prüfen Sie, ob die Datei oder Route deployt und erreichbar ist. Melden Sie sich per SSH am Server an und bestätigen Sie, dass die Datei unter dem erwarteten Document-Root-Pfad existiert. Prüfen Sie in nginx die root- oder alias-Direktive im passenden location-Block. Prüfen Sie in Apache DocumentRoot im Virtual Host.
Richten Sie 301- oder 308-Weiterleitungen für verschobene Inhalte ein. Wenn eine Ressource an eine neue Adresse umzieht, leiten Sie die alte URL weiter, um defekte Links zu vermeiden. In nginx:
location = /old-path {
return 301 /new-path;
}
In Apache .htaccess:
Redirect 301 /old-path /new-path
Prüfen Sie die Rewrite-Regeln des Servers. Sehen Sie die mod_rewrite-Regeln in Apache oder try_files und location-Blöcke in nginx durch. Ein fehlkonfiguriertes Rewrite verwirft Anfragen an gültige Pfade stillschweigend. Aktivieren Sie das Rewrite-Logging, um die Auswertung der Regeln nachzuverfolgen. Setzen Sie in Apache vorübergehend LogLevel alert rewrite:trace3.
Prüfen Sie MIME-Typen und Handler-Zuordnungen auf IIS. IIS gibt 404.3 zurück, wenn für eine Dateiendung kein registrierter MIME-Typ oder keine Handler-Zuordnung vorliegt. Fügen Sie den fehlenden MIME-Typ im IIS-Manager oder über web.config hinzu:
<staticContent>
<mimeMap fileExtension=".json"
mimeType="application/json" />
</staticContent>
Prüfen Sie DNS- und Virtual-Host-Konfiguration. Eine Domain, die auf den falschen Server zeigt, oder ein fehlender Virtual-Host-Eintrag führt zu 404 für sämtliche Pfade. Stellen Sie sicher, dass die DNS-A/CNAME-Einträge auf die korrekte Server-IP auflösen und der Server eine passende server_name- (nginx) bzw. ServerName-Direktive (Apache) besitzt.
Auditieren Sie defekte Links mit einem Crawler. Lassen Sie einen Site-Crawler laufen, um alle 404-Antworten auf der Site zu erkennen. Reparieren Sie defekte interne Links und reichen Sie eine aktualisierte XML-Sitemap bei den Suchmaschinen ein, um die Neuindexierung verschobener Inhalte zu beschleunigen. Zu den Werkzeugen für das Auffinden defekter Links zählen Google Search Console (Abdeckungsbericht), Screaming Frog, Ahrefs Site Audit oder wget —spider für die Prüfung auf der Kommandozeile.
Code-Referenzen
.NET
HttpStatusCode.NotFound
Rust
http::StatusCode::NOT_FOUND
Rails
:not_found
Go
http.StatusNotFound
Symfony
Response::HTTP_NOT_FOUND
Python3.5+
http.HTTPStatus.NOT_FOUND
Java
java.net.HttpURLConnection.HTTP_NOT_FOUND
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_NOT_FOUND
Angular
@angular/common/http/HttpStatusCode.NotFound