410 Gone
The HTTP 410 Gone status code is a client error returned by the server to indicate the requested resource is permanently unavailable. This is similar to 404, though 410 more specifically indicates the resource did exist but has been intentionally removed, and the removal is expected to be permanent.
Usage
When the 410 Gone error message is received, the client knows the address was valid at one point, but the resource no longer exists. This is the response returned after a resource, such as a document available as part of a limited-time offer, expires. If the server does not expect the removal to be permanent, 404 is used instead.
This status code is helpful for web maintenance and signals to clients to remove links to the resource. The response is cacheable by default. Clients and intermediaries store the 410 without explicit Cache-Control directives. Well-behaved clients do not retry the request, unlike 404 where a retry succeeds later.
Common use cases include expired promotions, deprecated API endpoints, and archived content permanently removed.
SEO impact
Search engines like Google will not index a URL with a 410 response status. URLs previously indexed will be removed from search results. Pages returning this code do not waste crawl budget. Google treats 404 and 410 identically. Both remove content from the index at the same rate. Returning 200 with error content or redirecting deleted URLs to the homepage instead of responding with 410 creates a soft 404, which wastes crawl budget and erodes trust in the site's server signals.
Example
The client requests a resource and the server responds with 410 Gone because the promotion has ended and the content is no longer available.
Request
GET /holiday-promotion-Jan-2021.pdf HTTP/1.1
Host: www.example.re
Response
HTTP/1.1 410 Gone
Content-Type: text/html
Content-Length: 133
<html>
<head>
<title>Promotion Expired</title>
</head>
<body>
<p>The promotional period has ended.</p>
</body>
</html>
How to fix
When a 410 appears unexpectedly, check the server
configuration files for unintended rules. In Apache,
search httpd.conf and .htaccess for RewriteRule
entries with the [G] (Gone) flag or Redirect gone
directives. In nginx, look for return 410 inside
location blocks in the server config. CMS plugins
and recent upgrades sometimes add 410 rules without
warning. Disable recently installed plugins to
isolate the source.
If the removal is intentional, update sitemaps to exclude the URL and remove internal links pointing to the resource.
In WordPress, plugins like Redirection or Yoast SEO manage 410 responses through the admin interface without editing server files directly.
If the removal is unintentional, restore the resource or its replacement and return 200. When a replacement page exists at a different URL, a 301 redirect is more appropriate than a 410.
Code references
.NET
HttpStatusCode.Gone
Rust
http::StatusCode::GONE
Rails
:gone
Go
http.StatusGone
Symfony
Response::HTTP_GONE
Python3.5+
http.HTTPStatus.GONE
Java
java.net.HttpURLConnection.HTTP_GONE
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_GONE
Angular
@angular/common/http/HttpStatusCode.Gone
Takeaway
The 410 Gone status code is a client error indicating the requested resource has been permanently removed. Clients are expected to remove existing links to the resource.
See also
- RFC 9110: HTTP Semantics
- Google: HTTP status codes and network errors
- Soft 404
- 404
- HTTP status codes
- HTTP headers