Title: HTTP 410 (Gone) responses
Author: Matt Calvert
Published: <strong>15.01.2011</strong>
Last modified: 05.08.2026

---

Шукати плагіни

![](https://s.w.org/plugins/geopattern-icon/wp-410.svg)

# HTTP 410 (Gone) responses

 Від автора [Matt Calvert](https://profiles.wordpress.org/xandercalvert/)

[Завантажити](https://downloads.wordpress.org/plugin/wp-410.1.2.1.zip)

 * [Деталі](https://uk.wordpress.org/plugins/wp-410/#description)
 * [Відгуки](https://uk.wordpress.org/plugins/wp-410/#reviews)
 *  [Встановлення](https://uk.wordpress.org/plugins/wp-410/#installation)
 * [Розробка](https://uk.wordpress.org/plugins/wp-410/#developers)

 [Підтримка](https://wordpress.org/support/plugin/wp-410/)

## Опис

This plugin issues an HTTP `410` response for URLs corresponding to content that
has been permanently removed from your site. Originally created by Samir Shah, now
maintained by Matt Calvert. When a post or page is deleted, the plugin logs the 
old URL and returns a `410` response when that URL is requested. You can also manually
manage the list of obsolete URLs.

The [HTTP Specification](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.11)
defines the `410 Gone` response for resources that have been permanently removed.
It informs search engines and crawlers that the content will not return, improving
crawl efficiency and SEO clarity.

This plugin is actively maintained by Matt Calvert as a personal project, informed
by previous professional experience with similar 410-handling logic. No proprietary
or employer-owned code has been used.

## Встановлення

 1. Upload the plugin folder to the `/wp-content/plugins/` directory
 2. Activate the plugin through the ‘Plugins’ menu in WordPress
 3. The plugin settings can be accessed via the ‘Plugins’ menu in the administration
    area

## Часті питання

### Can I customise the 410 response message?

The default message is a simple plain text message that reads “Sorry, the page you
requested has been permanently removed.” This is because many people want to minimise
the bandwidth that is used by error responses.

If you want to customise the message, just place a template file called `410.php`
in your theme folder, and the plugin will automatically use that instead. Take a
look at your theme’s `404.php` file to see how the template needs to be structured.
You can also hook into the `mclv_410_response` action to trigger any specific events
for queries resulting in a 410 response.

### Will this plugin work if a caching/performance plugin is active ?

The plugin has been tested with the following caching plugins, and should work even
if they are active:

 * W3 Total Cache
 * WP Super Cache

I have not tested it with other caching plugins, and there is a high chance that
it **will not work** with many of them. Most of them will cache the response as 
if it is a 404 (page not found) response, and issue a 404 response header instead
of a 410 response header.

## Відгуки

![](https://secure.gravatar.com/avatar/00c65a039ec11504e8950c7e0812d7090fff8e3052d4e40e86f14e90b37a22a4?
s=60&d=retro&r=g)

### 󠀁[Still works](https://wordpress.org/support/topic/still-works-183/)󠁿

 [Robert](https://profiles.wordpress.org/metbril/) 28.07.2020

I use the plugin for Micropub protocol, to tell another site I have deleted my contribution.

![](https://secure.gravatar.com/avatar/9c4928edc97c7bc1fbcc1caa39bd7a7de114a2f6620881da4bbf773ac9593f98?
s=60&d=retro&r=g)

### 󠀁[It still works](https://wordpress.org/support/topic/it-still-works-11/)󠁿

 [bloup](https://profiles.wordpress.org/bloup/) 05.05.2020

It is 2020 and it still works. In the plugin settings, I use a wild card to return
a 410 rather than a 404 from posts. https://mydomain.com/*/ The plugin return a 
410 in the header. BRAVO.

![](https://secure.gravatar.com/avatar/9d7641bff55a9101a00f3ed08a03e2b9278b7e862727bf60c472175cf0306c34?
s=60&d=retro&r=g)

### 󠀁[Works, But Google says its not needed](https://wordpress.org/support/topic/works-but-google-says-its-not-needed/)󠁿

 [alfadelta](https://profiles.wordpress.org/alfadelta/) 16.10.2018 3 replies

I removed this plugin based on help text from Google Webmaster Tools: If you have
permanently deleted content without intending to replace it with newer, related 
content, let the old URL return a 404 or 410. Currently Google treats 410s (Gone)
the same as 404s (Not found). Returning a code other than 404 or 410 for a non-existent
page (or redirecting users to another page, such as the homepage, instead of returning
a 404) can be problematic.

![](https://secure.gravatar.com/avatar/8bb82548ca2a36846f9b90bb1cc46224990491fe0c9207e9840a34101d95fa26?
s=60&d=retro&r=g)

### 󠀁[very good](https://wordpress.org/support/topic/very-good-3265/)󠁿

 [Dr assem foad](https://profiles.wordpress.org/assemfoad/) 04.08.2018

very good plugin

![](https://secure.gravatar.com/avatar/dc8469a5a4d9802ae0bb737b4b10c32c60291a6835d00dfa77436cbab66653c5?
s=60&d=retro&r=g)

### 󠀁[Excellent! 🙂](https://wordpress.org/support/topic/excellent-4872/)󠁿

 [MorphMan](https://profiles.wordpress.org/morphman/) 11.05.2017

Install, activate and it works! simple and effective solution! … BTW: I’m using 
Comet Cache PRO and have no problems

![](https://secure.gravatar.com/avatar/4afd146f08d7570246189a4c989d7a38cb9ae7bf16078bb295bf32b7345ee271?
s=60&d=retro&r=g)

### 󠀁[perfect](https://wordpress.org/support/topic/perfect-3978/)󠁿

 [Pasquale Galasso](https://profiles.wordpress.org/pasquale-galasso/) 20.04.2017

simple and perfect works with 4.7.3 version thanks

 [ Прочитати всі 22 відгуки ](https://wordpress.org/support/plugin/wp-410/reviews/)

## Учасники та розробники

“HTTP 410 (Gone) responses” — проект з відкритим вихідним кодом. В розвиток плагіну
внесли свій вклад наступні учасники:

Учасники

 *   [ Matt Calvert ](https://profiles.wordpress.org/xandercalvert/)
 *   [ Samir Shah ](https://profiles.wordpress.org/solarissmoke/)

“HTTP 410 (Gone) responses” було перекладено на 1 локалізацію. Дякуємо [перекладачам](https://translate.wordpress.org/projects/wp-plugins/wp-410/contributors)
за їх роботу.

[Перекладіть “HTTP 410 (Gone) responses” на вашу мову.](https://translate.wordpress.org/projects/wp-plugins/wp-410)

### Цікавитесь розробкою?

[Перегляньте код](https://plugins.trac.wordpress.org/browser/wp-410/), перегляньте
[сховище SVN](https://plugins.svn.wordpress.org/wp-410/) або підпишіться на [журнал розробки](https://plugins.trac.wordpress.org/log/wp-410/)
за допомогою [RSS](https://plugins.trac.wordpress.org/log/wp-410/?limit=100&mode=stop_on_copy&format=rss).

## Журнал змін

#### 1.2.1

 * The “Maximum number of 404 errors to keep” setting is now capped at 10,000 to
   prevent unbounded growth of the logged-404s table.
 * Fixed the “Recent 404 errors” pagination controls floating away from the table
   above them; they now stay aligned beneath it.

#### 1.2.0

 * **Bugfix:** Fixed a bug where selecting a large number of logged 404 entries (
   or 410/wildcard URLs) and submitting the bulk “Add”/”Delete” forms could silently
   reload the page without making any changes. This happened because very large 
   selections could exceed PHP’s `max_input_vars` limit, dropping the nonce/action
   fields the plugin relied on to detect which button was clicked.
 * Admin bulk actions are now identified by an explicit hidden `mclv_410_action`
   field (emitted, along with the nonce, before the checkbox list) instead of by
   which submit button was clicked.
 * Bulk operations now submit database IDs instead of full URLs, and are processed
   with chunked `WHERE gone_id IN (...)` queries instead of one query per row.
 * The “Obsolete URLs”, “Wildcard Patterns” and “Recent 404 errors” tables are now
   paginated (100 rows per page by default, filterable via `mclv_410_admin_per_page`)
   so the admin page never has to render or submit an unbounded number of rows at
   once. Pagination works without JavaScript, and “select all” only affects the 
   current page.
 * Admin form submissions now use a Post/Redirect/Get pattern, so reloading the 
   settings page after a successful operation does not repeat it.
 * Notices after an admin action now report specific outcomes (e.g. “182 logged 
   404 entries were added to the 410 list.”) instead of a generic “Options updated.”
   message.
 * **Bugfix:** The page-caching notice no longer implies that an unsupported caching
   plugin has been detected merely because `WP_CACHE` is enabled. It now describes
   page caching as informational, explains this is expected with W3 Total Cache 
   and WP Super Cache, and notes that other caching systems (including host-level
   caching) may need configuration.
 * The manual “add URLs” textarea now accepts a maximum of 500 URLs per submission,
   with a clear notice if that’s exceeded, to avoid very large pastes running into
   PHP execution-time limits.

#### 1.1.0

 * Compatibility: Tested and confirmed working on WordPress 7.0.
 * Updated minimum WordPress requirement to 5.0.
 * Added Requires PHP: 7.4 declaration to match WordPress 7.0 minimum.
 * Updated admin script enqueue to use the modern $args array form (WP 6.3+).

#### 1.0.3

 * Official release build for WordPress.org plugin directory.

#### 1.0.2

 * **Bugfix:** Updated version number in plugin header and asset versions.

#### 1.0.1

 * **Bugfix:** Fixed array assignment typo in `note_inserted_post()` method (changed`[].
   =` to `[] =`).
 * **Bugfix:** Added defensive check for missing/invalid post objects to prevent
   errors when `get_post()` returns null.

#### 1.0.0

 * **New:** Wildcard patterns now displayed in a separate section with visual warning
   for better visibility.
 * **New:** Admin settings page refactored into separate template file for cleaner
   code structure.
 * Properly enqueue admin CSS and JavaScript using wp_enqueue_style() and wp_enqueue_script().
 * Moved CSS and JavaScript to separate files (`css/admin.css` and `js/admin.js`).
 * Converted admin JavaScript from jQuery to vanilla JS (no jQuery dependency).
 * Improved data sanitization and validation for all user inputs including $_SERVER
   variables.
 * Secured uninstall.php with proper WP_UNINSTALL_PLUGIN check.
 * Renamed all function/class/element prefixes from `wp_410` to `mclv_410` for WordPress.
   org compliance.
 * Fixed all PHPCS coding standards errors and warnings.
 * **Deprecated:** The `wp_410_response` action hook is deprecated. Use `mclv_410_response`
   instead. The old hook still works but will trigger a deprecation notice.

#### 0.9.3

 * Added GitHub Actions workflow to automatically build a distributable plugin ZIP
   on tagged releases.

= 0.9.2
 * Fixed bug where you couldn’t select url in 404 menu.

#### 0.9.1

 * Significant internal refactor to meet modern WordPress Coding Standards (PHPCS).
 * Added full PHPCS ruleset and GitHub Actions workflow for automated linting.
 * Improved SQL handling by adding proper prepared statements (security hardening).
 * Replaced deprecated functions and improved URL parsing.
 * Ensured proper escaping throughout the admin interface.
 * General clean-up of inline documentation and comments.
 * No front-facing or behavioural changes; fully backwards compatible.

#### 0.9.0

 * Maintenance release by new maintainer (Matt Calvert).
 * Modernised plugin header and readme; added Tested up to 6.6.
 * General code clean-up and internal preparation for future improvements.
 * No behavioural changes in this release.

#### 0.8.6

 * Don’t rely on WordPress to correctly report whether the site is using SSL.

#### 0.8.5

 * Fix admin form CSRF checking.

#### 0.8.4

 * Add CSRF validation to settings page.

#### 0.8.3

 * Fix magic quotes handling on settings page.

#### 0.8.2

 * Overhaul settings page UI.
 * Add option to specify how many 404 errors to keep.

#### 0.8.1

 * Add select all helpers to 410/404 lists.

#### 0.8

 * Don’t automatically add links to the list when posts are deleted (most deletions
   are drafts).

#### 0.7.2

 * Add support for popular caching plugins (W3 Total Cache and WP Super Cache).

#### 0.7.1

 * Database tweaks (change ID to unsigned MEDIUMINT)

#### 0.7

 * Added logging of 404 errors so they can be easily added to the list of obsolete
   URLs.

#### 0.6.1

 * Bugfix: don’t accept URLs that don’t resolve to WordPress
 * Warn about invalid URLs when permalink settings change

#### 0.6

 * Moved storage of old URLs from the Options API to the database, to avoid issues
   with long lists.

#### 0.5

 * Added the option to use your own template to display the 410 response. Just add
   a file called `410.php` to your theme folder.

#### 0.4

 * Bugfix: With batch deletes, only the first item being deleted was noted by the
   plugin

#### 0.3

 * Bugfix: URLs containing non-ascii characters were not always recognised
 * Bugfix: URLs were displayed in encoded form on the settings page
 * Added a `mclv_410_response` action to allow users to customise the response message
   when a deleted article is requested

#### 0.2

 * Added wildcard support to URLs
 * Bugfix: don’t check URLs of deleted revisions and new draft posts

## Мета

 *  Версія **1.2.1**
 *  Останнє оновлення **3 дні тому**
 *  Активних встановлень **4 000+**
 *  Версія WordPress ** 5.0 або вище **
 *  Tested up to **7.0.3**
 *  Версія PHP ** 7.4 або вище **
 *  Мови
 * [English (UK)](https://en-gb.wordpress.org/plugins/wp-410/) і [English (US)](https://wordpress.org/plugins/wp-410/).
 *  [Перекладіть на свою мову](https://translate.wordpress.org/projects/wp-plugins/wp-410)
 * Позначки
 * [error](https://uk.wordpress.org/plugins/tags/error/)[gone](https://uk.wordpress.org/plugins/tags/gone/)
   [robots](https://uk.wordpress.org/plugins/tags/robots/)
 *  [Розширений перегляд](https://uk.wordpress.org/plugins/wp-410/advanced/)

## Оцінки

 4.6 out of 5 stars.

 *  [  15 5-star reviews     ](https://wordpress.org/support/plugin/wp-410/reviews/?filter=5)
 *  [  5 4-star reviews     ](https://wordpress.org/support/plugin/wp-410/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/wp-410/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/wp-410/reviews/?filter=2)
 *  [  1 1-star review     ](https://wordpress.org/support/plugin/wp-410/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/wp-410/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/wp-410/reviews/)

## Учасники

 *   [ Matt Calvert ](https://profiles.wordpress.org/xandercalvert/)
 *   [ Samir Shah ](https://profiles.wordpress.org/solarissmoke/)

## Підтримка

Проблеми вирішені за останні два місяці:

     0 з 1

 [Перейти в форум підтримки](https://wordpress.org/support/plugin/wp-410/)