Код 410 Gone означает, что сервер получил запрос, но целевой ресурс больше недоступен и это состояние, вероятно, постоянное. Короткий ответ для владельца сайта: ставьте 410 только при осознанном окончательном удалении URL. Если страница переехала, нужен постоянный редирект; если судьба ресурса неизвестна, безопаснее честный 404 Not Found.
Ниже — практическая схема выбора кода, проверки ответа и настройки 410 без риска закрыть рабочие страницы.
Что означает ошибка 410 Gone
По спецификации HTTP код 410 сообщает, что доступ к ресурсу на исходном сервере прекращён и это, скорее всего, окончательно. Сервер доступен: DNS, соединение и обработка запроса уже сработали. Ошибка относится к конкретному URL, а не обязательно ко всему сайту.
Слово Gone важно: владелец сервера не просто не нашёл файл, а сообщает клиентам, роботам и интеграциям, что ресурс больше не следует считать актуальным. При этом спецификация не требует помечать кодом 410 каждый навсегда удалённый адрес. Если невозможно уверенно определить постоянство удаления, уместен 404.
Ответ 410 может кэшироваться при отсутствии иных указаний. Поэтому после исправления правила CDN или промежуточный кеш иногда продолжает отдавать прежний код. Результат нужно проверить снаружи и при необходимости очистить кеш именно для затронутого URL.
Чем 410 отличается от 404, 301 и 503
Выбор кода зависит от реального состояния ресурса, а не от текста на странице.
| Ситуация | Подходящий ответ | Смысл | | --- | --- | --- | | Ресурс удалён окончательно, замены нет | 410 Gone | URL намеренно выведен из эксплуатации | | Ресурс не найден, постоянство неизвестно | 404 Not Found | По адресу сейчас ничего нет | | Материал переехал на точный новый URL | 301 или 308 | Есть постоянная замена | | Ресурс временно недоступен | 503 Service Unavailable | Серверная проблема временная |
Главное отличие 410 от 404 — уверенность в постоянстве решения. Развёрнутая диагностика обычного отсутствующего URL есть в статье про ошибку 404.
Не используйте 410 вместо 503 во время аварии и не отдавайте его странице, которую собираетесь вернуть после ремонта. Для поисковых систем и интеграций это будет ложным сигналом об окончательном удалении.
Когда 410 действительно уместен
410 подходит для отдельного ресурса, который существовал, удалён окончательно и не имеет релевантной замены. Например:
- закончилась временная акция, архивная версия вводит посетителей в заблуждение, а нового предложения нет;
- устаревший файл или API endpoint выведен из эксплуатации;
- тестовый либо ошибочно опубликованный URL нужно окончательно закрыть;
- после миграции подтверждён список старых адресов, которые не должны возвращаться.
Перед массовым правилом проверьте исключения. Слишком широкая регулярная маска способна вернуть 410 рабочему каталогу, форме или статическому файлу.
Не ставьте 410, если контент перенесён, страница временно выключена, сломался маршрут CMS, ошибка появилась после релиза без решения об удалении либо нужно лишь закрыть существующую страницу от индексации. Редирект всех удалённых адресов на главную тоже не решает задачу: посетитель ожидал конкретный материал. Если точной замены нет, честный 404 или осознанный 410 понятнее нерелевантного перехода.
Как выбрать ответ: дерево решения
- Страница должна работать по прежнему URL? Восстановите маршрут и верните корректный успешный ответ.
- Есть новая страница с тем же назначением? Настройте постоянный редирект на неё и исправьте внутренние ссылки.
- Ресурс удалён навсегда и это подтверждено владельцем контента? Верните 410.
- Постоянство удаления неизвестно? Оставьте 404 и разберитесь с источником URL.
- Недоступность временная? Используйте серверный код временной ошибки, а не 410.
Решение полезно зафиксировать в задаче: какой URL закрыт, кто подтвердил удаление, есть ли внешние зависимости и как будет проверен результат.
Почему 410 появляется неожиданно
Если код никто не планировал, ищите конфигурационную ошибку. Основные точки проверки:
- директива
returnв nginx или флагGв Apache; - плагин редиректов, SEO-модуль или запись в CMS;
- обработчик маршрута в приложении;
- правило CDN, reverse proxy или WAF;
- устаревший кеш;
- слишком широкая маска после миграции.
Пример: правило для удалённого раздела /archive/ составили без точной границы, и оно задело рабочий /archive-new/. Исправлять нужно условие маршрутизации, а не внешний вид страницы ошибки.
Если 410 возвращают многие рабочие карточки или формы, сначала запишите примеры URL и время появления. Сопоставьте их с последним релизом, изменением CMS, CDN и конфигурации сервера. Не меняйте все слои одновременно — иначе трудно определить причину.
Как проверить реальный HTTP-код
Надпись «Страница удалена» ничего не доказывает: шаблон может показывать её вместе с 200 OK. Это soft 404, а не корректный ответ об удалении.
Для проверки обычным GET-запросом выполните:
~~~bash curl -s -o /dev/null -w "%{http_code}\n" https://example.ru/old-page/ ~~~
Если возможны перенаправления, посмотрите конечный адрес:
~~~bash curl -s -o /dev/null -L -w "%{http_code} %{url_effective}\n" https://example.ru/old-page/ ~~~
Ключ -L проходит по цепочке редиректов. Для итоговой проверки используйте GET, а не только curl -I: приложения могут обрабатывать метод HEAD иначе.
Также можно открыть вкладку Network в DevTools или вставить адрес во внешнюю проверку сайта Web-Puls. Проверьте реальные варианты URL с http и https, с www и без него, со слешем и без слеша. Зафиксируйте не только первый код, но и переходы.
Как настроить 410 на сервере
Перед изменением сделайте резервную копию конфигурации, проверьте синтаксис и протестируйте точный URL на стенде. Расположение правил зависит от хостинга и приложения.
nginx
Официальная директива [return](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return) позволяет завершить обработку заданным кодом:
~~~nginx location = /old-page/ {
return 410;
} ~~~
Знак = ограничивает правило точным путём. После применения повторите внешний запрос и убедитесь, что соседняя страница по-прежнему работает.
Apache и .htaccess
В mod_rewrite флаг [G (gone)](https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_g) возвращает 410:
~~~apache RewriteEngine On RewriteRule ^old-page/?$ - [G,L] ~~~
В .htaccess шаблон обычно задают без начального слеша. В конфигурации виртуального хоста контекст сопоставления может отличаться, поэтому правило нельзя переносить вслепую.
PHP-приложение
Если решение принимает маршрутизатор приложения, статус возвращают до вывода тела:
~~~php http_response_code(410); require __DIR__ . '/gone-page.php'; exit; ~~~
Контроллер должен срабатывать только для подтверждённого удалённого ресурса. Добавьте тест: старый URL отвечает 410, соседний рабочий — 200. В управляемой CMS предпочтительнее штатный механизм удаления; ручная правка .htaccess может конфликтовать с фронт-контроллером.
Какой должна быть страница с ответом 410
HTTP-код нужен программам, но человек увидит страницу. Она должна прямо сообщать об удалении, сохранять навигацию, предлагать поиск или несколько действительно близких разделов и давать способ сообщить о неверной ссылке. При этом сервер обязан вернуть 410, а не маскировать удаление кодом 200.
Для API уместен короткий структурированный ответ. Не возвращайте успешный JSON со статусом 200, если endpoint окончательно удалён: клиент может принять транспортный успех за рабочий результат.
Что сделать с SEO и внутренними ссылками
После удаления одного серверного кода недостаточно:
- Уберите URL из
sitemap.xml. - Исправьте ссылки в меню, статьях, письмах и рекламе.
- Не закрывайте URL в
robots.txt, если роботу нужно увидеть ответ об удалении. - Проверьте панели вебмастеров после повторного обхода, не ожидая мгновенного обновления.
Google Search Central рекомендует возвращать 404 или 410, когда страница удалена и релевантной замены нет, а при переносе использовать постоянный редирект. Задача не в «магическом SEO-коде», а в правдивом описании судьбы URL.
Как заметить случайный 410 раньше посетителей
Для намеренно удалённой страницы ответ 410 — норма. Для главной, посадочной, формы заявки, карточки товара или API тот же код означает инцидент.
Практичная схема контроля:
- составьте список критичных URL и ожидаемых кодов;
- после релиза проверьте изменённые маршруты;
- контролируйте внешним мониторингом страницы, которые должны отвечать 200;
- уведомляйте команду при неожиданной смене статуса;
- сохраняйте время события и фактический код для сопоставления с релизом.
Web-Puls помогает регулярно проверять доступность выбранных адресов и быстрее замечать неожиданный HTTP-ответ. Сервис не решает за владельца, нужно ли удалить страницу, но даёт внешний результат для диагностики.
Если массовый 410 появился без понятной причины после миграции, изменения CMS, CDN или серверных правил, можно отправить URL и описание через форму профессиональной поддержки. Другие способы связи указаны на странице контактов.
Чеклист перед включением 410 Gone
- Подтверждено окончательное удаление ресурса.
- Релевантной замены для редиректа нет.
- Проверены внутренние ссылки, реклама и интеграции.
- URL удалён из sitemap.xml.
- Правило ограничено точным адресом или проверенным списком.
- Соседние рабочие страницы включены в тест.
- Учтён кеш CDN и reverse proxy.
- Результат проверен обычным GET-запросом извне.
Вывод
Ошибка 410 Gone — не универсальная замена 404 и не способ временно выключить страницу. Она подходит, когда ресурс намеренно удалён, замены нет и владелец уверен, что URL не вернётся. При переносе используйте постоянный редирект, при неизвестном состоянии — 404, при временном сбое — соответствующий серверный ответ.
Сначала зафиксируйте судьбу URL, затем настройте точное правило, уберите устаревшие ссылки и проверьте код снаружи. Мониторинг рабочих страниц поможет быстро заметить случайный 410, если ошибочное правило затронет важный маршрут.