Ошибка 404: страница не найдена — что это значит и как исправить

Автор: Опубликовано: 6 минут чтения

404 Not Found — ответ сервера о том, что по запрошенному адресу нет ресурса: страница удалена, переименована или адрес набран с ошибкой. Сайт при этом работает, поэтому 404 не считают сбоем сети. Посетителю достаточно проверить адрес и поискать страницу через поиск или карту сайта, владельцу — разобрать логи, проверить маршрутизацию nginx/Apache/CMS и настроить редиректы.

Ошибка 404: страница не найдена — что это значит и как исправить
Схема: где возникает ошибка 404 Цепочка запроса: Браузер → nginx → PHP-FPM → Файлы и БД сайта. Сбой между узлами «nginx» и «PHP-FPM». Браузер nginx PHP-FPM Файлы и БД сайта Ошибка 404 Ответ с кодом ошибки возвращает узел «nginx»
Ошибка 404: страница не найдена — что это значит и как исправить: путь запроса и место сбоя.
Содержание
  1. Что означает ошибка 404 простыми словами
  2. Как ошибка выглядит в браузерах
  3. Чем 404 отличается от похожих кодов
  4. Причины: для посетителя и для владельца сайта
  5. Что делать посетителю
  6. Что делать владельцу сайта: пошаговая диагностика
  7. Как предотвратить повторение

Коротко: как исправить ошибку 404 на своём сайте

  1. Проверьте код ответа. Отправьте запрос командой curl -sI https://ваш-сайт/адрес/ и посмотрите первую строку ответа и заголовок Server. Так вы поймёте, кто отвечает: nginx, Apache или приложение.
  2. Разберите логи. В /var/log/nginx/access.log или /var/log/apache2/access.log отфильтруйте строки с кодом 404 и посчитайте самые частые адреса: это покажет, какие ссылки битые и откуда приходят посетители.
  3. Проверьте конфигурацию веб-сервера. Убедитесь, что в nginx задан try_files $uri $uri/ /index.php?$args;, а в Apache включены mod_rewrite и AllowOverride, а также прописан ErrorDocument 404. Проверьте root/alias и совпадение регистра букв в именах файлов.
  4. Пересоберите правила ЧПУ в CMS. В WordPress откройте «Настройки → Постоянные ссылки» и сохраните их заново либо выполните wp rewrite flush --hard. Проверьте, что файл .htaccess на месте и не перезаписан плагином.
  5. Настройте редиректы 301. Для страниц, которые переехали или удалены намеренно, добавьте постоянные перенаправления на актуальные адреса. Так вы сохраните трафик и накопленные внешние ссылки.
  6. Отдайте корректную страницу 404. Сделайте собственную страницу с поиском и ссылками на разделы и убедитесь, что она возвращает код 404, а не 200. Иначе поисковые системы воспримут её как мягкую ошибку (soft 404).

Что означает ошибка 404 простыми словами

Код 404 (Not Found — «не найдено») — ответ веб-сервера на запрос браузера. Сервер получил запрос, понял, какой адрес у него просят, но подходящего ресурса у него нет: страница удалена, переименована, никогда не существовала или адрес набран с ошибкой. Соединение при этом устанавливается, сайт работает, поэтому 404 не считают сбоем интернета или «поломкой» компьютера.

Формально 404 входит в группу клиентских кодов 4xx: по мнению сервера, проблема в самом запросе, точнее — в адресе, а не в нём самом. Код передаётся в первой строке HTTP-ответа и виден в инструментах разработчика на вкладке Network, даже если на экране открылась красиво оформленная страница «Страница не найдена».

Типичный сценарий: вы перешли по ссылке из старой статьи, закладки или письма, а материал давно перенесли в другой раздел. Или в адресе оказался лишний символ. Или сайт сменил CMS и не настроил перенаправления со старых адресов.

Как ошибка выглядит в браузерах

  • Chrome и Edge показывают заглушку «Не удаётся найти эту страницу» с подписью HTTP ERROR 404 и кнопкой возврата.
  • Firefox выводит «Страница не найдена», Safari — сообщение о том, что сервер не может найти запрошенный ресурс.
  • Если у сайта есть собственная страница 404, браузер покажет именно её: текст, иллюстрацию, поиск, ссылки на разделы.

Важно не путать коды. Надписи вида ERR_NAME_NOT_RESOLVED, ERR_CONNECTION_TIMED_OUT или «Не удаётся получить доступ к сайту» означают проблемы с DNS, сетью, провайдером или сертификатом. 404 всегда значит, что сервер ответил и ответил отказом по конкретному адресу. В мобильных приложениях и играх сообщение «ошибка 404» обычно приходит от внутреннего API: клиент запрашивает метод или файл, которого на сервере больше нет, — чаще всего после обновления.

Чем 404 отличается от похожих кодов

Код Смысл Что видит посетитель
400 Некорректный запрос Ошибка из-за недопустимых символов в адресе
401 Требуется авторизация Запрос логина и пароля
403 Доступ запрещён Ресурс есть, но закрыт для вас
404 Ресурс не найден «Страница не найдена»
410 Ресурс удалён навсегда Аналог 404, но с явным указанием на удаление
500/502/503/504 Сбой на сервере Техническая ошибка, сайт не отвечает или отвечает ошибкой

Разница принципиальна при диагностике. Если вы видите 403, проблема в правах доступа и настройках безопасности — об этом отдельный материал про ошибку 403. Если 500 или 502 — виноват сервер, а не адрес: смотрите статью про ошибку 500. Код 410 встречается редко, и поисковые системы воспринимают его как ускоренное указание удалить адрес из индекса.

Отдельный случай — «мягкая» ошибка (soft 404): сайт показывает текст «страница не найдена», но отдаёт код 200 OK. Для посетителя всё выглядит нормально, для поисковых систем — как полноценная страница с пустым или дублирующимся содержимым. Это стоит исправлять.

Причины: для посетителя и для владельца сайта

Со стороны посетителя

  • устаревшая закладка или ссылка из давней публикации;
  • опечатка, лишний или пропущенный символ в адресе;
  • страницу удалили, переименовали или перенесли в другой раздел без перенаправления;
  • ссылку обрезали при копировании из мессенджера или письма;
  • VPN, прокси или фильтрация провайдера подставили свою заглушку;
  • в приложении или игре устарел клиент и обращается к несуществующему методу API.

Со стороны владельца сайта и разработчика

  • файла или маршрута действительно нет на диске либо в базе;
  • неверно задан root или alias, поэтому сервер ищет файл не в той папке;
  • сломаны правила try_files / rewrite, и запрос не доходит до обработчика;
  • в имени файла другой регистр букв — на Linux это разные файлы;
  • в CMS не пересобраны правила ЧПУ после смены структуры ссылок;
  • страница удалена без редиректа, а внешние ссылки на неё остались;
  • битые внутренние ссылки в меню, шаблоне или карточках товаров;
  • кэш CDN или прокси отдаёт старую версию конфигурации;
  • ошибка в порядке объявления маршрутов в Node.js или другом фреймворке.

Что делать посетителю

  1. Проверьте адрес: опечатки, лишние символы, завершающий слэш, регистр букв.
  2. Вернитесь на главную страницу или воспользуйтесь поиском по сайту и картой разделов.
  3. Обновите страницу с очисткой кэша (Ctrl+F5), попробуйте режим инкогнито и другой браузер.
  4. Отключите VPN, прокси и подозрительные расширения, если ошибка появилась внезапно.
  5. Найдите сохранённую копию страницы в веб-архиве, если материал действительно удалён.
  6. Если у других пользователей страница открывается, а у вас нет — проверьте DNS и настройки сети на своём устройстве.

Что делать владельцу сайта: пошаговая диагностика

Шаг 1. Определите, кто отдаёт 404

curl -sI https://example.com/put/ | head -n 5

В первой строке будет версия HTTP и код, в заголовке Server — имя сервера. Дополнительно проверьте, совпадает ли отдаваемая страница с вашей собственной или это стандартная заглушка nginx либо Apache.

Шаг 2. Найдите источник по логам

grep ' 404 ' /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20

Для Apache пути обычно /var/log/apache2/access.log или /var/log/httpd/access_log. Так вы увидите самые частые несуществующие адреса и поймёте, откуда идут переходы: из поиска, из внутреннего меню или от сканеров.

Шаг 3. Проверьте конфигурацию nginx

server {
    root /var/www/site/public;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    error_page 404 /404.html;
    location = /404.html {
        internal;
    }
}

Если сайт динамический, строка try_files должна передавать запрос обработчику. Отсутствие /index.php?$args — самая частая причина 404 на внутренних страницах.

Шаг 4. Проверьте Apache и .htaccess

ErrorDocument 404 /404.html

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

Убедитесь, что в конфигурации виртуального хоста для каталога сайта стоит AllowOverride All и подключён mod_rewrite. Иначе правила в .htaccess просто игнорируются.

Шаг 5. Проверьте WordPress

Откройте «Настройки → Постоянные ссылки» и сохраните схему заново — это перезаписывает правила. Через WP-CLI то же самое делается командами:

wp option get permalink_structure
wp rewrite flush --hard

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

Шаг 6. Проверьте маршруты в Node.js и API

// обработчик должен идти последним, после всех маршрутов
app.use((req, res) => {
  res.status(404).render('404');
});

Частые причины 404 в приложении: обработчик объявлен раньше рабочих маршрутов, не совпадает префикс (/api/v1 и /api/v2), изменился HTTP-метод, запрос уходит на другой порт или хост.

Шаг 7. Настройте перенаправления

Для страниц, которые переехали, нужен постоянный редирект. Как он работает и чем отличается от временного, разобрано в статье про редирект 301. Для сети старых адресов удобно вести таблицу соответствий и хранить её в конфигурации, а не в разрозненных правилах.

Как предотвратить повторение

  • Меняйте адреса страниц только вместе с редиректом и не допускайте цепочек из нескольких перенаправлений.
  • Держите актуальную карту сайта: sitemap.xml удобно собирать генератором при каждом обновлении контента.
  • Раз в месяц просматривайте топ-404 в логах: это самый дешёвый способ найти битые ссылки и вовремя поставить редиректы.
  • Настройте мониторинг доступности с проверкой не только времени ответа, но и кода ответа для ключевых страниц.
  • Сделайте полезную страницу 404 с поиском, ссылками на популярные разделы и корректным кодом ответа.
  • Проверяйте маршруты и правила ЧПУ на тестовой копии перед выкладкой на рабочий сайт.
  • Ограничивайте нагрузку от сканеров: limit_req в nginx, fail2ban, разумные лимиты на размер и длину запроса помогут не забивать логи мусорными 404.
  • Следите за кэшем CDN: после смены структуры ссылок старые адреса нужно сбрасывать, иначе часть посетителей продолжит получать ошибку.

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

Ошибка 404 — это вирус или поломка интернета?

Нет. Код 404 означает, что связь с сайтом есть и сервер ответил, но запрошенного адреса у него нет. Проблемы с сетью выглядят иначе: браузер пишет, что не удаётся получить доступ к сайту, или показывает ошибки вида ERR_NAME_NOT_RESOLVED и ERR_CONNECTION_TIMED_OUT.

Почему у меня ошибка 404, а у других страница открывается?

Чаще всего дело в локальном кэше, устаревшей закладке или расширении браузера. Помогает обновление с очисткой кэша (Ctrl+F5), режим инкогнито и отключение VPN или прокси. Если страница не открывается только через мобильный интернет, причиной может быть DNS-сервер или фильтрация у провайдера.

Что значит ошибка 404 в игре или мобильном приложении?

Приложение обращается к серверному API по адресу, которого там больше нет: например, после обновления игры старый клиент запрашивает устаревший метод или файл. Обычно помогает обновление клиента и очистка его кэша, реже — переустановка. На сайт в браузере такая ошибка никак не влияет.

Чем 404 отличается от 403 и 500?

403 означает, что ресурс существует, но доступ к нему запрещён. 404 — ресурса нет вообще. 500, 502, 503 и 504 — ошибки на стороне сервера, когда он не смог обработать запрос или не дождался ответа от внутренних служб. Подробнее о запрете доступа — в материале про ошибку 403, о сбоях сервера — про ошибку 500.

Что делать, если 404 появилась из-за опечатки в ссылке сайта?

Такую ссылку нужно исправить в исходном коде страницы или в шаблоне. Если адрес уже попал в письма, рекламу или внешние публикации, разумно дополнительно настроить перенаправление с ошибочного адреса на правильный, чтобы посетители не попадали на страницу «не найдено».

Надо ли закрывать 404-страницы в robots.txt?

Нет. Корректный код 404 сам сообщает поисковой системе, что адреса не существует, и такие URL постепенно выпадают из индекса. Закрытие их в robots.txt лишает робота возможности увидеть код ответа и может замедлить очистку индекса. Правила для служебных разделов описаны в статье про файл robots.txt.

Материал подготовлен редакцией справочника Торох и носит справочный характер: интерфейсы программ и настройки серверов зависят от версии. Нашли неточность? Напишите нам.

Читайте также

Другие разделы