HTTPQUERY
Français

500 Internal Server Error

Utilisation

Le code de statut 500 Internal Server Error signale une défaillance générique côté serveur. En raison du caractère très général de cette erreur, la cause précise dépend de l’environnement. Le serveur web rencontre des problèmes et l’administrateur du serveur doit intervenir pour les résoudre.

L’erreur est souvent attribuée à un problème de permissions sur un ou plusieurs fichiers, à un délai d’expiration de script ou à une corruption du fichier .htaccess. La seule certitude est que la requête HTTP n’a pas été satisfaite.

Remarque

Pour un utilisateur final, une erreur 500 n’est pas de la faute du client. La seule chose à faire est d’attendre et de réessayer plus tard, ou de contacter l’administrateur du site. La plupart des erreurs 500 sont temporaires et causées par des conditions passagères comme l’épuisement des ressources ou des problèmes de déploiement.

Remarque

Une réponse 500 qui laisse fuiter des traces de pile, des requêtes de base de données, des chemins de fichiers ou des versions de framework expose des informations utiles aux attaquants. Les serveurs de production doivent renvoyer une page d’erreur générique et ne journaliser les détails que côté serveur.

Impact SEO

Googlebot considère les erreurs 5xx comme un signal l’invitant à réduire temporairement la vitesse de crawl sur l’ensemble du site. Les URL précédemment indexées sont d’abord conservées, mais une indisponibilité prolongée amène Google à les retirer de l’index. Tout contenu renvoyé avec une réponse 500 est ignoré. À cet égard, Google traite 500, 502 et 503 de façon identique. Une erreur 5xx sur le fichier robots.txt est bien plus grave, même si toutes les autres pages du site renvoient 200. Google interrompt le crawl pendant jusqu’à 12 heures, puis se rabat sur une copie en cache pendant jusqu’à 30 jours. Si l’erreur persiste, Google désindexe entièrement le site. Bingbot traite lui aussi les réponses 5xx comme des échecs de crawl. Des erreurs 5xx persistantes empêchent l’indexation dans Bing.

Exemple

Le client demande une ressource et le serveur répond avec le code de statut 500 Internal Server Error, indiquant que la requête ne sera pas satisfaite.

Requête

GET /news.html HTTP/1.1
Host: example.com

Réponse

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>

Comment corriger

Commencez par le journal d’erreurs. Dans nginx, consultez /var/log/nginx/error.log. Dans Apache, consultez /var/log/apache2/error.log ou /var/log/httpd/error_log. L’entrée du journal nomme presque toujours le fichier fautif et le numéro de ligne.

Causes profondes courantes et leurs correctifs :

Après avoir identifié la cause, déployez le correctif et surveillez le journal d’erreurs pour détecter toute récidive. Mettez en place des alertes sur les journaux afin de repérer les pics de 500 avant que les utilisateurs ne les signalent.

Références de code

.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