На эту страницу попадают по опечатке в адресе, по старой ссылке из чужого поста и после того, как страницу переименовали. Человек пришёл за чем-то конкретным и получил пустоту — задача страницы 404 не извиниться, а вернуть его в сайт.

Главное — не текст, а код ответа

Вместе со страницей сервер отправляет число — код ответа. Двести означает «всё в порядке, вот страница», четыреста четыре — «такой страницы нет». Человек этого числа не видит, а поисковый робот смотрит только на него.

Отсюда главная беда, которую называют мягкой четыреста четвёртой: страница красиво говорит «не найдено», а код при этом двести. Робот верит коду и заносит несуществующий адрес в поиск как обычную страницу. Через месяц в выдаче десятки одинаковых «Страница не найдена».

Как проверить за десять секунд

Откройте любой несуществующий адрес своего сайта, нажмите F12, вкладка «Сеть», обновите страницу и посмотрите на код у первой строки. Должно быть 404. Если 200 — страница ошибки настроена неправильно.

Как её включают

На обычном хостинге с Apache — одной строкой в файле .htaccess в корне сайта.

.htaccess
ErrorDocument 404 /404.html

Путь обязан начинаться со слэша: это адрес на сайте, а не путь к файлу на диске. И ведёт он на страницу внутри того же сайта — чужой адрес сюда писать нельзя, иначе код ответа станет другим.

Что на ней разместить

Шапка и подвал остаются те же, что на всём сайте: человек должен видеть, что он не выпал в пустоту. Дальше — четыре вещи, и больше ничего.

Содержимое страницы 404
Что Зачем
Заголовок обычными словами «Такой страницы нет» понятнее, чем «Ошибка 404»
Одно предложение почему Опечатка в адресе или страницу перенесли
Поиск по сайту Человек знает, что искал, — дайте ему это ввести
Три-четыре ссылки на главные разделы Прямой путь туда, куда он, скорее всего, шёл

Не перебрасывать на главную

Автоматический переход через пять секунд — плохая идея сразу по трём причинам: человек не успевает прочитать, что случилось; он теряет адрес, по которому пришёл; а поисковик считает такую переадресацию попыткой подменить страницу.

Ещё одна мелочь: страницу 404 нужно закрыть от индексации метатегом noindex и не включать в sitemap.xml. Человеку она нужна, в поиске — нет.

Что попросить у нейросети

Мой запрос

Свёрстай страницу 404 для сайта-справочника о вёрстке. Шапка и подвал у меня уже есть, нужно только содержимое между ними.

На странице: заголовок обычными словами, одно предложение с объяснением, поле поиска по сайту и четыре ссылки на главные разделы. Никаких больших картинок и шуток про роботов. В head — метатег noindex.

Дай заодно строку для .htaccess и объясни, как проверить, что сервер отдаёт именно код 404, а не 200. Разметка семантическая, один h1, классы по БЭМ.

Ответ нейросети

Про путь к файлу. В ErrorDocument указывайте адрес от корня сайта, со слэша. Путь вида 404.html без слэша Apache понимает по-своему, и вместо страницы иногда выдаётся её исходный текст.

Про относительные ссылки. Страница 404 показывается по любому адресу, в том числе глубоко вложенному. Все пути на ней — к стилям, шрифтам, иконкам, ссылкам — должны быть от корня, начиная со слэша. Относительные сломаются, и человек увидит страницу без оформления.

Про проверку. Вкладка «Сеть» в инструментах разработчика или команда curl -I с адресом несуществующей страницы: в первой строке ответа должно стоять 404.

В Evolution CMS страница 404 — обычный ресурс

Отдельный файл в CMS не нужен: страница ошибки создаётся как обычный ресурс на том же шаблоне, а её номер указывается в системной настройке «Страница ошибки 404». Дальше движок сам подставляет её и сам отдаёт правильный код ответа.

Проверять всё равно нужно: настройка есть, а работает она только при включённых человекопонятных адресах. Первым делом после переноса сайта откройте несуществующий адрес и посмотрите на код ответа.

Частые ошибки

Чем чаще всего ломают страницу 404
Ошибка Чем плохо Как правильно
Код ответа 200 вместо 404 Поисковик заносит несуществующие адреса в выдачу Настроить ErrorDocument и проверить во вкладке «Сеть»
Переадресация на главную Человек не понимает, что произошло, и теряет адрес Показать страницу ошибки и дать ссылки
Относительные пути к стилям По вложенному адресу страница открывается без оформления Все пути от корня, со слэша
Страница без шапки и меню Похоже, что сайт сломался целиком Те же шапка и подвал, что везде
Страница 404 в sitemap.xml Робот получает противоречивые указания В карту не включать, поставить noindex

Что должно получиться

  • Несуществующий адрес открывает вашу страницу, а не страницу хостинга
  • Во вкладке «Сеть» код ответа 404, а не 200
  • На странице есть поиск и ссылки на главные разделы
  • Оформление не ломается при открытии по вложенному адресу
  • Никакой автоматической переадресации