Reference guide · http-status · Published 2026-08-15 · 4 min read

HTTP 410 gone and permanent removal

HTTP 410 gone explained: the permanent removal signal, why it beats 404 for dead content, and how to return 410 for deleted pages on Apache, nginx and WordPress.

What a 410 means

A 410 Gone is a permanent, deliberately chosen variant of 404. The server states "I used to have this URL and it will never come back", which in practice tells crawlers and clients that a later return is unlikely. It saves the crawler from keeping a soft-return, drops the URL from the crawl queue, and keeps humans from a dead "not found" that looks like an oversight.

The difference is intent. A 404 means "no resource here", which is also said for a typo, a build gap, or a page you may never have had. A 410 means "this exact resource existed and is finished", and it is the accurate signal for a defunct product, a removed offer, or a page you merged and killed.

410 versus 404 in one view

Question404 Not Found410 Gone
Resource existed once?Maybe, unknownYes, and it is gone
Likelihood of returnUnknownNone, permanent
What the crawler learnsNothing specialDrop this URL, do not expect a return
Effect on usersGeneric dead pageClear: the content is ended (if you add copy)
ExampleTypo URL, removed page you keep quiet aboutRetired product page, killed offer page

Both are absolute results: no redirect, no equity to give to a new URL. When the next best page is the new home of that content, 301 is the better answer than 410, since it hands value to a live page.

When to use a 410

Choose 410 over 404 when you want the crawler to be forced: you are telling the index to drop the page, and want the signal to hold.

When NOT to use a 410

How to return a 410

# Apache: by path
Redirect 410 /old-page/

# nginx
location = /old-page/ {
  return 410;
}

In WordPress, a 410.php template, or a redirect plugin that supports custom status codes, issues 410 for the slug list. On Cloudflare, a Worker or a Bulk Redirect before the origin serves 410 for a rule set.

Verify the status

curl -I https://example.com/killed-page/
HTTP/2 410

Check the response in the browser DevTools network tab too: a WordPress theme can override status and return 200 with the "not found" text, a soft 410 that defeats the purpose.

Operational order

  1. List the slugs and confirm none has an essential backlink profile worth redirecting.
  2. Confirm the best next action per slug: either 301 to the new home (if it exists) or 410 (if it does not).
  3. Add the rules per the server type and verify with curl.
  4. After a week, pull the crawl of the old URLs from Search Console or your log and confirm the Gone status is what the crawler saw.

Prevention

Need a website built, fixed, optimised, migrated or replaced?

This technical resource is written by CSMBAC, a small design and development studio. If you would rather hand the problem to a professional, the website service page explains how we build enquiry-ready websites.

Explore website services