Ошибка 404: Не страшная сказка, а технический косяк. Объясняю на пальцах.
Вот уже лет семнадцать я ковыряюсь в сайтах. Сначала как простой верстальщик, потом как админ, сейчас больше консультирую. И знаете, что люди боятся больше всего? Нет, не хакерских атак. Обычной ошибки 404. Эта штука выводит из себя и пользователей, и владельцев. Что такое ошибка 404? По сути, это код ответа сервера. Грубо говоря, сервер честно говорит: «Чувак, я обыскался тут весь, но той страницы, которую ты просишь, нету». И все. Всё просто. Но почему же тогда вокруг нее столько паники?
Чаще всего причина — банальный битый линк. Удалили страницу, переименовали, переместили в другую папку. А ссылка-то на нее осталась. Или ее вручную вбили с опечаткой. Или внешний сайт, который на вас ссылался, сам сгенерировал кривой URL. Стандартная история. Но вот вам неочевидный косяк, с которым я разбирался два дня на одном крупном сайте интернет-магазина. После миграции на новый движок страницы с товарами открывались. А вот фильтры в каталоге, которые формируют свои уникальные URL, выдавали 404. Логи-то чистые, редиректы прописаны. Оказалось, дело было в регистре символов. На старом сервере URL /catalog/SHiny_Zimnie
и /catalog/shiny_zimnie
вели на одну страницу. А новый сервер, под управлением nginx на Linux, стал чувствителен к регистру. Маленькая буква вместо большой — и привет, ошибка. Мелочь. А сколько трафика потеряли.
Лично я терпеть не могу, когда веб-мастера ставят редирект 302 вместо 301 на несуществующие страницы. Да, временный редирект быстрее прописать. Но для поисковиков это сигнал: страница временно перемещена, индексировать старый адрес не нужно. А потом все удивляются, почему позиции просели. По моему опыту, перманентный 301-й всегда эффективнее, вопреки некоторым мнениям о том, что разница невелика. Веб-сервер — он как старый дед. Любит четкость и постоянство.
Техническая поддержка сайта должна уметь работать с логами. Это база. Без этого они просто гадатели. Смотрите access.log, ищите строки с кодом 404. Там всё как на ладони. Какие именно адресы просят, с каких реферов пришли. Иногда находишь такое, что волосы дыбом. У меня был случай, когда один скрипт на стороне клиента 15 раз в секунду дергал несуществующий файл favicon.ico
из-за кривой разметки. Представляете нагрузку? А все потому, что верстальщик сэкономил пять минут.
Кастомная страница 404 — это must have. Не та, что «Ой, ничего нет!», а с поиском, навигацией, ссылками на популярное. Удержи пользователя. Не дай ему уйти. Но многие забивают на это. Создадут стандартную заглушку и думают, что дело сделано. Это тема для отдельного разговора, как ее проектировать.
Еще одна боль — кеширование ошибок. Это когда страница удалена, сервер отдает 404, а проксирующий сервер или CDN эту ошибку запоминает и начинает отдавать ее всем подряд, даже когда вы страницу уже восстановили. Настраивайте заголовки кеширования для 404-х ответов правильно! Cache-Control: no-cache, must-revalidate
. Чтобы не было такого, что полгода пользователь не может попасть на рабочий ресурс.
И где тут логика?! Видел я сайты, где при 404-й ошибке сервер возвращает код 200 ОК и просто рисует текст «Страница не найдена». Поисковый робот индексирует эту ерунду как нормальный контент. Потом в выдаче мусор, дубли. Кошмар. Всегда проверяйте настоящий код ответа через «Инструменты разработчика» во вкладке Network. Браузер может врать.
Кстати, о поисковиках. В Google Search Console есть целый раздел «Просмотреть недействительные страницы». Золотая жила для аудита. Пройдитесь, посмотрите. Часто там всплывают такие адреса, о которых вы и не подозревали.
Ассоциация. Помните старые добрые карты сайта sitemap.xml? Так вот, если в нем указаны несуществующие URL, вы сами приглашаете робота на страницу с 404. Регулярно обновляйте карту. Удаляйте оттуда мусор.
Вот вам мое спорное мнение. Слишком умные плагины для мониторинга 404-х ошибок иногда вредят. Они создают кучу лишних запросов, нагружают сервер и часто срабатывают ложно. Лучше хорошенько настроить логирование на самом веб-сервере и парсить логи скриптом. Старая школа. Но работает безотказно.
Главное — не паниковать. Ошибка 404 это не конец света. Это рабочий процесс. Это указатель на проблему, которую нужно решить. Мониторьте, исправляйте, настраивайте редиректы. И ваш сайт будет только лучше.
Автор статьи: Дмитрий Ковалёв, бывший сисадмин хостинга «Энид», соавтор самописной CMS для новостных порталов конца 2000-х, учился у Олега Бунина (первый техдир Рамблера).