500 Internal Server Error
Verwendung
Der Statuscode 500 Internal Server Error signalisiert einen allgemeinen Fehler auf Serverseite. Aufgrund der weit gefassten Natur dieses Fehlers hängt die konkrete Ursache von der jeweiligen Umgebung ab. Der Webserver hat Probleme, und der Serveradministrator muss tätig werden, um sie zu beheben.
Der Fehler lässt sich häufig auf ein Berechtigungsproblem bei einer oder mehreren Dateien, eine Zeitüberschreitung eines Skripts oder eine beschädigte .htaccess-Datei zurückführen. Sicher ist einzig, dass die HTTP-Anfrage nicht erfüllt wurde.
Hinweis
Als Endanwender trifft Sie bei einem 500-Fehler keine Schuld; er liegt nicht am Client. Die einzige Möglichkeit besteht darin, abzuwarten und es später erneut zu versuchen oder den Website-Administrator zu kontaktieren. Die meisten 500-Fehler sind vorübergehend und werden durch kurzzeitige Zustände wie Ressourcenerschöpfung oder Deployment-Probleme verursacht.
Hinweis
Eine 500-Antwort, die Stacktraces, Datenbankabfragen, Dateipfade oder Framework-Versionen preisgibt, offenbart Informationen, die Angreifern nützen. Produktionsserver müssen eine generische Fehlerseite zurückgeben und Details ausschließlich serverseitig protokollieren.
SEO-Auswirkung
Googlebot wertet 5xx-Fehler als Signal, die Crawling-Rate für die gesamte Website vorübergehend zu senken. Zuvor indexierte URLs bleiben zunächst erhalten, längere Ausfallzeiten führen jedoch dazu, dass Google sie aus dem Index entfernt. Inhalte, die mit einer 500-Antwort ausgeliefert werden, werden ignoriert. Google behandelt 500, 502 und 503 in dieser Hinsicht identisch. Ein 5xx-Fehler bei der Datei robots.txt ist weitaus gravierender, selbst wenn jede andere Seite der Website 200 zurückgibt. Google stoppt das Crawling für bis zu 12 Stunden und greift anschließend bis zu 30 Tage lang auf eine zwischengespeicherte Kopie zurück. Hält der Fehler an, entfernt Google die Website vollständig aus dem Index. Auch Bingbot wertet 5xx-Antworten als Crawling-Fehler. Anhaltende 5xx-Fehler verhindern die Indexierung in Bing.
Beispiel
Der Client fordert eine Ressource an, und der Server antwortet mit dem Statuscode 500 Internal Server Error, was anzeigt, dass die Anfrage nicht erfüllt wird.
Anfrage
GET /news.html HTTP/1.1
Host: example.com
Antwort
HTTP/1.1 500 Internal Server Error
Content-Type: text/html; charset=UTF-8
Content-Length: 139
<html>
<head>
<title>Request Failed</title>
</head>
<body>
<p>The request failed due to a server error.</p>
</body>
</html>
Behebung
Beginnen Sie mit dem Fehlerlog. Prüfen Sie bei nginx /var/log/nginx/error.log. Prüfen Sie bei Apache /var/log/apache2/error.log oder /var/log/httpd/error_log. Der Logeintrag nennt fast immer die fehlerhafte Datei und die Zeilennummer.
Häufige Grundursachen und ihre Behebung:
Nachdem Sie die Ursache ermittelt haben, rollen Sie die Korrektur aus und beobachten Sie das Fehlerlog auf erneutes Auftreten. Richten Sie Log-Alarme ein, um Ausschläge bei 500-Fehlern zu erkennen, bevor Nutzer sie melden.
Code-Referenzen
.NET
HttpStatusCode.InternalServerError
Rust
http::StatusCode::INTERNAL_SERVER_ERROR
Rails
:internal_server_error
Go
http.StatusInternalServerError
Symfony
Response::HTTP_INTERNAL_SERVER_ERROR
Python3.5+
http.HTTPStatus.INTERNAL_SERVER_ERROR
Java
java.net.HttpURLConnection.HTTP_INTERNAL_ERROR
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_SERVER_ERROR
org.apache.hc.core5.http.HttpStatus.SC_INTERNAL_SERVER_ERROR
Angular
@angular/common/http/HttpStatusCode.InternalServerError