HTTPQUERY
Español

404 Not Found

Uso

Cuando llega un error 404 Not Found, el estado no especifica si el recurso no está disponible de forma permanente, si no lo está de forma temporal o si nunca existió. Este error suele deberse a URL mal escritas y lo ven con frecuencia los desarrolladores que trabajan con un conjunto de recursos todavía en curso.

Los enlaces a direcciones que devuelven 404 Not Found se conocen habitualmente como enlaces muertos o enlaces rotos. El estado también se ha utilizado cuando un servidor no está dispuesto a reconocer que un recurso existe.

Cuando el servidor sabe que el recurso existió en su momento en la dirección indicada, pero se ha eliminado de forma permanente, el estado 410 Gone resulta más informativo.

Dado que los usuarios finales se encuentran con este error muy a menudo, muchos servidores utilizan una página de error personalizada, descriptiva y relevante para su sitio.

Nota

Un 404 no significa que el cliente esté bloqueado. Estar bloqueado produce 403 Forbidden. Algunos servidores devuelven 404 en lugar de 403 para ocultar la existencia del recurso. El 404 tampoco indica permanencia: el recurso puede aparecer más adelante. Para una eliminación permanente, el servidor devuelve 410 Gone.

Impacto en SEO

Los buscadores como Google no indexan una URL que devuelve el estado 404. Las URL indexadas previamente que devuelven este código de estado se eliminan de los resultados de búsqueda. Las páginas que devuelven este código no consumen presupuesto de rastreo. Google trata 404 y 410 de forma idéntica: ambos eliminan el contenido del índice al mismo ritmo. Bingbot considera el 404 una señal de eliminación de contenido y desindexa la URL tras confirmar el estado en un rastreo posterior. Devolver un 200 con contenido de error en lugar de un 404 correcto genera un soft 404, que desperdicia presupuesto de rastreo y erosiona la confianza en las señales del servidor del sitio.

Ejemplo

El cliente solicita un recurso y el servidor responde con 404 Not Found porque el recurso no existe en la dirección indicada.

Solicitud

GET /documents/secret-formula.pdf HTTP/1.1
Host: example.com

Respuesta

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>

Cómo solucionarlo

Un 404 Not Found significa que no existe ningún recurso en la dirección solicitada.

Verifique la escritura y la ruta de la URL. Los errores tipográficos en la ruta, el nombre del archivo o la cadena de consulta son la causa más habitual. Revise con atención cada segmento de la dirección. Copie la ruta directamente del enlace de origen en lugar de escribirla a mano.

Compruebe la distinción entre mayúsculas y minúsculas. Los servidores basados en Linux tratan /Page y /page como rutas distintas. Respete exactamente las mayúsculas y minúsculas de la URL original. Los servidores IIS sobre Windows no distinguen mayúsculas de minúsculas de forma predeterminada, así que un 404 en IIS apunta a un recurso realmente inexistente.

Fíjese en la posible falta de la barra final. Algunos servidores distinguen entre /path y /path/. Añada o quite la barra final y vuelva a intentarlo. nginx y Apache tratan las barras finales de manera diferente según la configuración de try_files y DirectorySlash.

Confirme que el recurso existe en el servidor. Verifique que el archivo o la ruta estén desplegados y sean accesibles. Conéctese por SSH al servidor y confirme que el archivo existe en la ruta esperada del document root. En nginx, revise la directiva root o alias del bloque location coincidente. En Apache, revise DocumentRoot en el host virtual.

Configure redirecciones 301 o 308 para el contenido que se ha movido. Cuando un recurso se traslada a una dirección nueva, redirija la URL antigua para evitar enlaces rotos. En nginx:

location = /old-path {
    return 301 /new-path;
}

En el .htaccess de Apache:

Redirect 301 /old-path /new-path

Revise las reglas de reescritura del servidor. Examine las reglas de mod_rewrite en Apache o los bloques try_files y location en nginx. Una reescritura mal configurada descarta silenciosamente las solicitudes a rutas válidas. Active el registro de reescrituras para seguir la evaluación de las reglas. En Apache, establezca temporalmente LogLevel alert rewrite:trace3.

Verifique los tipos MIME y las asignaciones de controladores en IIS. IIS devuelve 404.3 cuando una extensión de archivo carece de un tipo MIME o de una asignación de controlador registrados. Añada el tipo MIME que falta desde el Administrador de IIS o mediante web.config:

<staticContent>
  <mimeMap fileExtension=".json"
    mimeType="application/json" />
</staticContent>

Revise la configuración de DNS y de los hosts virtuales. Un dominio que apunta al servidor equivocado, o la falta de una entrada de host virtual, provoca un 404 en todas las rutas. Verifique que los registros DNS A/CNAME resuelvan a la IP correcta del servidor y que este tenga una directiva server_name (nginx) o ServerName (Apache) coincidente.

Audite los enlaces rotos con un rastreador. Ejecute un rastreador del sitio para detectar todas las respuestas 404 en él. Corrija los enlaces internos rotos y envíe un XML sitemap actualizado a los buscadores para acelerar la reindexación del contenido movido. Entre las herramientas para encontrar enlaces rotos están Google Search Console (informe de cobertura), Screaming Frog, Ahrefs Site Audit o wget —spider para comprobaciones desde la línea de comandos.

Referencias de código

.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