Skip to content

404 Not Found

The server has no representation for the target URL and will not say whether it ever did.

Status

HTTP/1.1 404 Not Found

Details

  • Category: 4xx
  • Status: Standard. Registered with IANA and defined by a current standards-track RFC.
  • Specification: RFC 9110 §15.5.5
  • Cacheable: Cacheable by default
  • Response body: Allowed
  • Retry: Do not retry

404 is the most recognisable status on the web. It says the server found no current representation for the URL, and deliberately makes no promise about whether the resource existed before or will exist later. That vagueness is useful: a server may return 404 instead of 403 to avoid confirming that a resource exists at all.

For SEO the important part is the status line, not the page. A friendly error page served with 200 is a soft 404: crawlers index it as a real page and the site accumulates duplicate thin content. The response must actually carry 404.

Note: A missing page served with 200 is a soft 404: crawlers index it as real content and the site accumulates duplicate thin pages. The status line is what matters, not the error page.

Common causes

  • The URL is wrong, including case differences on case-sensitive servers.
  • The resource was deleted or moved without a redirect.
  • A rewrite or routing rule did not match, so the request fell through to the default handler.
  • The request reached the wrong host or virtual host, which is common behind misconfigured proxies.
  • A deliberate 404 hiding a resource the caller is not allowed to know about.

How to fix it

As the client

  • Verify the exact path, including trailing slash and letter case.
  • Check whether the resource moved. A HEAD request against the likely new URL is cheap.
  • Confirm the Host header is right when going through a proxy or a local hosts entry.

As the server

  • Serve a real 404 status with your error page. Never return 200 for a missing page.
  • Add 301 redirects for URLs that genuinely moved so links and ranking signals survive.
  • Watch 404 logs. A spike usually means a broken deploy, a bad rewrite rule, or a removed asset still referenced by a page.
  • Return 410 when a resource is intentionally gone for good and you want crawlers to drop it faster.

Examples

Requesting a page that does not exist

A request for a product page that no longer exists:

HTTP request

GET /products/discontinued-item HTTP/1.1
Host: www.example.com

The status line is what matters here. A friendly error page served with 200 would be a soft 404:

HTTP response

HTTP/1.1 404 Not Found
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache

Specifications

See also