Проверка soft 404
Несуществующая страница должна отвечать статусом 404. Многие сайты вместо этого отвечают 200 или тихо отправляют посетителя на главную. Эта проверка запрашивает у вашего сервера два адреса, которых не может существовать, и сообщает, что он ответил.
В каждом ответе есть число, которого посетитель не видит
Когда сервер отвечает на запрос, первая строка ответа содержит трёхзначный код статуса. Страница идёт после. Люди читают страницу, а программы читают число. 200 значит «вот то, что вы просили», 301 значит «переехало, смотрите там», 404 значит «по этому адресу ничего нет», а 410 значит «удалено намеренно».
Soft 404 получается, когда эти двое расходятся. Текст на экране говорит, что страницы нет, или посетитель тихо оказывается на главной, а число всё это время говорит 200. Тогда поисковики продолжают обходить, а иногда и индексировать адреса, которые никуда не ведут. Проверщики ссылок считают каждую мёртвую ссылку рабочей. Мониторы доступности горят зелёным, хотя целого раздела сайта уже нет.
Что запрашивает проверка и как она решает
Наш сервер собирает два адреса из случайных символов, чтобы они не совпали с настоящей страницей. Один выглядит как папка (/probe-check-k7m2x9qa4t/), другой как файл (/h3n8v2c5w7pq.html). Мы используем два вида, потому что веб-сервер часто сам отвечает на запросы, похожие на файлы, а всё остальное передаёт CMS. Мы идём по редиректам и сохраняем код каждого шага. Если сайт вообще не отвечает по HTTPS, проверка переходит на обычный HTTP.
| Что вернулось | Вердикт |
|---|---|
404 или 410 по запрошенному адресу | Правильно. |
Редирект, который заканчивается страницей 404 | Предупреждение. Роботы это понимают, но адрес, который ввёл посетитель, в адресной строке заменяется. |
200 по запрошенному адресу | Soft 404. |
Редирект на главную (/, /en, /index.php), которая отвечает 200 | Soft 404. |
Редирект на любую другую страницу, которая отвечает 200 | Soft 404. |
500 и выше | Ошибка. Что-то падает на неизвестных адресах. |
401 или 403 | Предупреждение. Обычно это правило файрвола, которое отвечает раньше сайта. |
Страница ошибки тоже проходит проверку
Если код правильный, проверка читает HTML страницы ошибки и ищет то, что нужно заблудившемуся посетителю:
- Путь домой. Подходит любая ссылка на корень сайта или его языковой версии, в том числе кликабельный логотип.
- Объяснение. В заголовке страницы, главном заголовке или тексте должно быть что-то вроде «404», «не найдено», «не существует» или «извините». Меньше 15 слов содержимого без шапки, меню и подвала отмечается как слишком скудное.
- Поле поиска. Если его нет, вы получите замечание. Ошибкой это не считается.
<title>и атрибутlang, чтобы вкладкам браузера и экранным дикторам было что объявить.- Вес. Больше 500 КБ HTML отмечается, потому что боты запрашивают несуществующие адреса целый день.
Стандартная страница nginx, Apache, IIS или LiteSpeed распознаётся, и об этом сообщается. На ней нет ни логотипа, ни ссылок, и посетители решают, что ушли с вашего сайта. Вам также скажут, если два тестовых адреса получают явно разные страницы: это значит, что у веб-сервера и у CMS своя страница ошибки у каждого.
Как превратить soft 404 в настоящий
- Apache
ErrorDocument 404 /404.html. Указывайте локальный путь. С полным URL Apache отправляет редирект, и итоговый код становится200.- nginx
error_page 404 /404.html;. Уберите=200, если оно стоит между404и путём.- WordPress
- Ядро уже отвечает
404. Найдите плагин редиректов или SEO с опцией вроде «перенаправлять 404 на главную» и отключите её. - Одностраничные приложения
- Перезапись всего подряд на
index.htmlотвечает200на всё. Отрисовывайте неизвестные маршруты на сервере со статусом404или поручите это хостингу (Netlify и Cloudflare Pages отдают корневой404.htmlс правильным кодом).
Проверьте изменение из терминала командой curl -I https://example.com/no-such-page: она первой печатает строку статуса.
Два случайных адреса в корне не покрывают весь сайт. Магазин, форум или блог, установленный в подпапку, может вести себя иначе, поэтому проверьте там выдуманный адрес вручную. Мы не выполняем скрипты, поэтому сообщение об ошибке, нарисованное JavaScript, здесь не видно. А настоящую страницу, которая просто пуста и которую поисковики тоже помечают как «soft 404», снаружи обнаружить нельзя.
Частые вопросы
Что такое ошибка soft 404?
Ответ, который сообщает людям, что страницы нет, а программам, что всё в порядке. Обычно он бывает в одном из двух видов: страница «не найдено», отданная со статусом 200, или неизвестный адрес, перенаправленный на главную.
Плохо ли для SEO перенаправлять все 404 на главную?
Да. Google считает сплошной редирект на главную мягким 404, поэтому он не передаёт никакого веса, а посетители не понимают, почему оказались там. Перенаправляйте старый адрес только на страницу, которая его заменила, кодом 301, а остальные пусть отвечают 404.
Удалённая страница должна отдавать 404 или 410?
Оба варианта правильные. 410 Gone говорит, что удаление намеренное и окончательное, и поисковики обычно убирают адрес чуть быстрее. Используйте 404, если не уверены, что страница вообще существовала.
Вредят ли ошибки 404 позициям в поиске?
Нет. Несуществующие адреса это нормальная часть интернета, и сайту их в вину не ставят. Вредит другое: ссылка на такой адрес на ваших собственных страницах или популярная старая страница, которая теперь отвечает 404, хотя могла бы перенаправлять на свою замену.
Почему Search Console показывает soft 404 на существующей странице?
Google использует эту метку и для настоящих страниц, которые выглядят пустыми: категория без товаров, поиск без результатов, страница, содержимое которой не загрузилось. Добавьте содержимое или отдавайте 404, если у страницы нет причин существовать.
Как самому посмотреть код ответа страницы?
Откройте инструменты разработчика в браузере, выберите вкладку «Сеть» (Network) и перезагрузите страницу. Первая строка показывает код. Из терминала то же самое делает curl -I с адресом.