HTTPQUERY
Español

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