500 Internal Server Error
Uso
El código de estado 500 Internal Server Error señala un fallo genérico del lado del servidor. Dada la amplitud de este error, la causa concreta depende del entorno. El servidor web está experimentando problemas y el administrador del servidor debe actuar para resolverlos.
El error suele atribuirse a un problema de permisos en uno o varios archivos, a un tiempo de espera agotado de un script o a una corrupción del archivo .htaccess. Lo único seguro es que la solicitud HTTP no se cumplió.
Nota
Para el usuario final, un error 500 no es culpa del cliente. Lo único que cabe hacer es esperar y reintentar más tarde o ponerse en contacto con el administrador del sitio. La mayoría de los errores 500 son temporales y se deben a situaciones pasajeras, como el agotamiento de recursos o problemas de despliegue.
Nota
Una respuesta 500 que filtra trazas de pila, consultas a la base de datos, rutas de archivos o versiones del framework expone información útil para los atacantes. Los servidores de producción deben devolver una página de error genérica y registrar los detalles únicamente en el lado del servidor.
Impacto en SEO
Googlebot interpreta los errores 5xx como una señal para reducir temporalmente la velocidad de rastreo en todo el sitio. Los URL indexados previamente se conservan al principio, pero una caída prolongada hace que Google los elimine del índice. Cualquier contenido devuelto con una respuesta 500 se ignora. En este aspecto, Google trata 500, 502 y 503 de forma idéntica. Un error 5xx en el archivo robots.txt es mucho más grave, incluso si todas las demás páginas del sitio devuelven 200. Google detiene el rastreo durante un máximo de 12 horas y después recurre a una copia en caché durante un máximo de 30 días. Si el error persiste, Google desindexa el sitio por completo. Bingbot también considera las respuestas 5xx como fallos de rastreo. Los errores 5xx persistentes impiden la indexación en Bing.
Ejemplo
El cliente solicita un recurso y el servidor responde con el código de estado 500 Internal Server Error, lo que indica que la solicitud no se va a satisfacer.
Solicitud
GET /news.html HTTP/1.1
Host: example.com
Respuesta
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>
Cómo solucionarlo
Empiece por el registro de errores. En nginx, revise /var/log/nginx/error.log. En Apache, revise /var/log/apache2/error.log o /var/log/httpd/error_log. La entrada del registro casi siempre indica el archivo y el número de línea donde se produjo el fallo.
Causas raíz habituales y sus soluciones:
Tras identificar la causa, despliegue la corrección y vigile el registro de errores por si se repite. Configure alertas sobre los registros para detectar los picos de 500 antes de que los usuarios los notifiquen.
Referencias de código
.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