Техническое SEO: доступ поисковика к сайту

404 ошибки

HTTP 404 — код «этого URL нет»: когда его отдавать, чем он отличается от ложного 200 и 301 на главную, и какие строки Search Console и Вебмастера можно игнорировать.

Кирилл Бабийчук · обновлено · 7 мин чтения

404 — это не штраф в выдаче и не строка «сайт сломан». Это код ответа HTTP: origin говорит, что по запрошенному URL сейчас нет представления. Хаб технического SEO закрывает доступ целиком. Когда документ переехал на другой адрес той же задачи — это соседняя тема 301 редиректа, не «красивая заглушка». Карта sitemap.xml не должна кормить робота адресами, которых уже нет.

Код в первой строке ответа, не текст на экране

Браузер и робот читают статус из заголовка: HTTP/1.1 404 Not Found. Тело ответа может быть полноценной HTML-страницей с поиском и ссылками — Google содержимое 4xx-ответов не использует и в индекс не кладёт. Новые 404 не обрабатываются, частота обхода такого URL со временем падает. Уже проиндексированный адрес, который начал отдавать 4xx, из индекса снимают. Коды 4xx, кроме 429, сами по себе скорость обхода сайта не режут — это не способ «приглушить» Googlebot.

Справка Search Console прямо пишет: обычные 404 на эффективность в Google Поиске не влияют, их можно игнорировать, если URL на сайте быть не должен. Обязательное условие — именно код 404 (или 410) и отсутствие запрета в robots.txt. Если робот не имеет права запросить URL, он не увидит статус «нет документа» и не сможет снять его из индекса штатно.

В Яндекс Вебмастере строка справочника по HTTP такая же по смыслу: 404 — «документ не существует». Если раздела больше нет, Вебмастер допускает закрыть его в robots.txt. Если URL на сайте никогда не было — ошибку игнорируют: часто это чужая битая ссылка или опечатка. Чтобы вычистить уже попавший в поиск адрес, робот должен увидеть 404, 403 или 410; после обнаружения указания страница уходит из базы примерно за неделю.

Жёсткий 404 и ложный

Жёсткий случай — origin отдаёт 404 или 410. Ложный (в кабинете Google: «Ложная ошибка 404») — человек видит «не найдено», а статус 200, либо «несуществующий» URL склеивают 301 на главную или другой слишком широкий преемник. Пустая 200, шаблон «Oops» без кода, SPA, где сервер всегда отвечает 200, а маршрутизатор в JavaScript рисует «страницы нет» — это один класс: робот получает успех и может попытаться проиндексировать заглушку.

Google в документации по статусам пишет: если тело 200 выглядит как ошибка или пустая страница, Search Console показывает soft 404. Сейчас Google обрабатывает 410 и 404 одинаково; семантическая разница остаётся для других клиентов и для Яндекса: 410 в справочнике Вебмастера — ресурс удалён окончательно, для переезда — 301. Отдельную страницу про 410 в этом кластере ещё не публиковали: здесь правило одно — нет преемника той же задачи, не выдумывайте 200 и не пылесосьте на корень.

В отчёте Search Console «Страницы» две разные причины. «Не найдено (404)» — Google получил 404, URL нашёл сам (ссылка, старый адрес), без вашей карты; робот ещё какое-то время будет заходить, всё реже. «Ложная ошибка 404» — статус не 404, а смысл страницы для робота «здесь пусто». Проверка URL → «Посмотреть проверенную страницу» показывает, что именно увидел рендер, а не что нарисовал вам браузер после скриптов.

Ситуация Код Что не делать
Документ жив, сменился путь один 301 на эквивалент цепочка и 301 на главную
Документа нет и не будет 404 (или 410, если удаление окончательное) 200 с текстом «не найдено»
SKU/оффер снят, есть сосед той же задачи 301 на ближайший живой URL редирект на корень каталога
URL выдуман, опечатка, чужой href оставить 404 затыкать тонкой страницей
SPA: API сказал «нет сущности» серверный 404 или noindex на заглушке клиентский экран при 200

Что чинить в кабинете, что оставлять

Чините свои контуры. Внутренняя ссылка из меню, крошек, карточки, пагинации или из sitemap на мёртвый URL — это вы сами кормите обход тупиком. Снимите href, обновите карту, отдайте 404 на старый адрес. Если смысл переехал — один 301, финал 200 с каноникалом на себя, без промежуточных прыжков. Про каноникал как сигнал «оба 200, мастер вот этот» — Canonical URL, его не подставляют вместо статуса «нет документа».

Не чините чужой шум. Google сам приводит пример: в разметке аналитики висит виртуальный путь /download-helloworld, робот его запрашивает, в отчёте появляется 404, на обход и ранжирование сайта это не влияет. Опечатки в чужих статьях, сканеры, старые UTM-посадки из писем, которых вы не обещали держать вечно — тот же класс. Search Console показывает такие URL примерно за последний месяц, список не копят бесконечно.

Запрещать 404 в robots.txt «чтобы отчёт почище» — плохая гигиена для Google: робот перестаёт подтверждать отсутствие документа. Яндекс после удаления целого раздела как раз предлагает Disallow как дополнительный контур, не вместо кода. Два кабинета, две процедуры: в Google смотрите, не закрыт ли URL, который должен отдать 404; в Яндексе после массового снятия раздела можно и статус, и Disallow.

Не плодите заглушки «чтобы закрыть 404». Google прямо просит не создавать ненужный контент, не редиректить на главную и не прятать мёртвые URL в robots.txt — иначе сложнее понять структуру сайта. Тонкая 200 вместо честного 404 часто сама уезжает в «ложную ошибку 404». Если сомневаетесь, живой ли ещё шаблон, снимите заголовки без следования редиректам: curl -sI без -L. Иначе увидите только финальные 200 и не заметите, что «услуга» уже год отдаёт 301 на «/».

Заглушка для человека и SPA

Тело 404-страницы — для человека: поиск по сайту, 3–5 живых денежных разделов, контакт. Статус всё равно 404. WordPress это 404.php темы, nginx — error_page 404, Apache — ErrorDocument 404. Плагин «редирект всех 404 на главную» выглядит заботой и производит пачку ложных склеек: об этом уже сказано на странице 301, здесь достаточно не включать его.

В одностраничном приложении сервер часто отвечает 200 на любой клиентский маршрут, а «нет сущности» рисует JavaScript после fetch. Для Google это классический soft 404, заглушка может попасть в выдачу. Search Central предлагает два рабочих приёма: перейти на URL, который origin реально отдаёт 404, и/или выставить meta name="robots" content="noindex" на этой заглушке. Фрагменты #/product/123 робот как отдельные документы не рассматривает — History API и серверный статус на каноническом пути.

Индексация как процесс — соседние хабы индексации Google и индексации Яндекса. 404 не заменяет отчёт покрытия и не лечит недоступный шаблон. Если мёртвых URL в ваших же ссылках много, это уже контур доступа, его разбирают в SEO-аудите: не список «N ошибок 404 из кабинета», а какие свои href и строки sitemap ведут в тупик.

Честный 404 — это договор: этого URL нет. Его не маскируют 200, главной и Disallow «для порядка в отчёте».

Частые вопросы

Нужно ли закрывать все URL из отчёта «Не найдено (404)»?

Нет. Search Console считает нормальным 404 на удалённый адрес без преемника и на URL, которого никогда не было. Чините те, на которые ссылаетесь сами или которые до сих пор висят в sitemap. Чужие опечатки и выдуманные пути оставляйте 404.

Можно ли вместо 404 отдать 200 с текстом «страница не найдена»?

Нельзя, если документа нет. Это ложная ошибка 404: робот получает успех и может проиндексировать заглушку. Человеку можно красивый HTML — но первая строка ответа должна быть 404 или 410.

Чем 404 отличается от 410, если Google их сейчас равняет?

Для Google Search сейчас одинаково: оба 4xx, URL не индексируется, контент игнорируется. Для Яндекса 410 — «удалён окончательно», 404 — «не существует» (в том числе временно или неизвестно). Если не уверены, что ресурс не вернётся, оставляйте 404; окончательное снятие без преемника можно отдать 410.

Почему появляются адреса, которых не было в структуре сайта?

Робот ходит по href, не по вашему меню. Источники — опечатка в чужой статье, старый sitemap, виртуальный путь в JavaScript или аналитике, сканнер. Если это не ваш внутренний контур, достаточно честного 404 без Disallow.