Три уровня «неизвестного» адреса
Не все несуществующие адреса одинаковы, и реагировать на них нужно по-разному.
- адрес не совпал ни с одним маршрутом — обычная ошибка 404;
- маршрут подошёл, но записи по слагу нет — тоже 404;
- запись существовала, но удалена навсегда — код 410.
Общий обработчик в конце списка маршрутов
Универсальный маршрут помещают последним: он перехватывает всё, что не подошло раньше, и формирует ответ. Именно здесь задаётся правильный статус и оформление страницы ошибки.
app.use((req, res) => {
res.status(404).render('errors/404');
});
Главная ошибка — код 200 на странице ошибки
Если приложение показывает сообщение «страница не найдена», но отвечает кодом успеха, поисковая система считает такой адрес нормальной страницей. Подобных «страниц» можно получить бесконечно много, поэтому проблема подробно разобрана в статье про мягкую 404.
Полезная страница ошибки для человека
- ясное сообщение, что страницы нет;
- поиск по сайту и ссылки на основные разделы;
- единое оформление, совпадающее с остальным сайтом.
Как оформить такую страницу, рассказано отдельно в статье про полезную страницу 404.
Не перенаправляйте все ошибки на главную
Ошибка: редирект каждого неизвестного адреса на главную выглядит удобным, но для поисковой системы это тоже мягкая 404 и источник недоверия к сайту.
Подсказка похожих страниц
Хорошая страница ошибки помогает найти нужное. Если запрошенный адрес похож на существующий — например, отличается одной буквой — можно предложить пользователю вероятную страницу. Автоматически перенаправлять по догадке не стоит: ошибка в догадке заведёт человека не туда.
- показывайте поиск по сайту и ссылки на основные разделы;
- предлагайте несколько похожих вариантов, а не один;
- код ответа при этом остаётся 404.
Отслеживание частоты ошибок
Резкий рост числа ошибок 404 — важный сигнал. Он может означать, что после релиза сломались внутренние ссылки или изменились адреса. Настройте оповещение при превышении обычного уровня, чтобы узнавать о проблеме раньше, чем о ней сообщит панель вебмастера. Подробнее о наблюдении — в статье про логирование обращений к несуществующим адресам.
Когда перенаправление всё же уместно
Если удалённая страница имеет очевидную замену, например похожий товар или раздел, разумно настроить редирект именно на неё, а не оставлять ошибку. Главное условие — реальное соответствие содержимого. Перенаправление на нерелевантную страницу воспринимается как мягкая ошибка и не приносит пользы.
Частые вопросы
Какой код отдавать для адреса, которого не существует?
Код 404, а для окончательно удалённого содержимого — 410; успешный код 200 на странице ошибки недопустим.
Стоит ли перенаправлять все неизвестные адреса на главную?
Нет, такое поведение воспринимается как мягкая ошибка и запутывает и пользователей, и поисковую систему.
Где должен находиться общий обработчик неизвестных адресов?
В самом конце списка маршрутов, чтобы он перехватывал только те запросы, которые не подошли ни под один другой маршрут.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.