HTTPQUERY
English

410 Gone

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.

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: example.com

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