Skip to content
EN
← Все статьи

Ошибка 404: что значит Not Found и как исправить на сайте

Смартфон в руке со страницей «не найдено» на сайте

Ошибка 404 означает, что сервер сайта работает и ответил на запрос, но страницы или файла по этому адресу у него нет. Чаще всего виноваты опечатка в ссылке, удалённая или переехавшая без редиректа страница либо ошибка в настройках сервера. Посетителю стоит проверить адрес, владельцу — найти источник битой ссылки и вернуть страницу или поставить 301-редирект.

Коротко для двух сторон. Для посетителя 404 — не поломка компьютера и не вирус: интернет работает, сайт доступен, просто конкретного адреса на нём нет. Для владельца сайта 404 — сигнал, что где-то остались битые ссылки, потерялся редирект после переезда или сломались правила перезаписи URL. Ниже — что означает код, чем он отличается от похожих ошибок, как найти все 404 на сайте и как их исправить в nginx, Apache, WordPress, PHP и SPA.

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

Когда вы открываете страницу, браузер отправляет серверу запрос, а сервер возвращает трёхзначный код состояния. Первая цифра — класс ответа: 2xx — всё хорошо, 3xx — перенаправление, 4xx — ошибка на стороне запроса, 5xx — ошибка на стороне сервера. Код 404 из класса 4xx: сервер понял запрос, но по этому пути ничего не нашёл. Цифры 04 — просто номер внутри класса, а популярная легенда о «комнате 404» в ЦЕРН, где якобы стоял первый веб-сервер, подтверждений не имеет.

Согласно RFC 9110 §15.5.5, код 404 указывает, что сервер не смог найти текущее представление целевого ресурса или не желает раскрывать факт его существования. Это клиентская ошибка (класс 4xx), но она часто связана с серверной конфигурацией. Вторая часть определения важна: некоторые сервисы и API намеренно отвечают 404 вместо 403, чтобы не подтверждать, что закрытый ресурс вообще существует.

Выглядит ошибка по-разному — текст выбирает сайт или веб-сервер:

  • 404 Not Found и строка nginx под ней — стандартная страница nginx;
  • Not Found. The requested URL was not found on this server. — стандартная страница Apache;
  • File not found. — ответ связки nginx + PHP-FPM, когда PHP-скрипт не найден (разбор ниже);
  • 404 Page Not Found, «Страница не найдена», «Такой страницы нет» — собственные страницы сайтов и CMS;
  • HTTP ERROR 404 — так Chrome подписывает ответ 404, если сайт не прислал своей страницы.

Все эти варианты — один и тот же код ответа. Узнать, какой код сервер отдал на самом деле, можно в DevTools или проверкой HTTP статус-кода; полное определение и примеры — на справочной странице 404 Not Found (RFC 9110).

Код 404, 410, 403 и «сервер не найден»: в чём разница

Важно отличать 404 от родственных кодов: 410 Gone (ресурс удалён навсегда), 301 Moved Permanently (ресурс переехал) и 403 Forbidden (доступ запрещён). Путаница между ними приводит к SEO-проблемам — подробнее в нашем справочнике HTTP кодов. Отдельно стоит ошибка «сервер не найден»: её часто принимают за 404, хотя это совсем другая ситуация — до сервера браузер вообще не добрался.

Что видит пользовательКодЧто произошлоКогда использовать или что проверять
404 Not Found, «Страница не найдена»404Сервер ответил, но ресурса по этому пути нетАдрес не существует или причина неизвестна; проверить ссылку, rewrite-правила, файлы
410 Gone410Ресурс был, но удалён намеренно и навсегдаСнятые с продажи товары, удалённые разделы без замены
Страница открылась по другому адресу301Ресурс постоянно переехал на новый URLСмена структуры URL, склейка дублей, переезд на HTTPS
403 Forbidden403Ресурс есть, но доступ к нему запрещёнПрава на файлы, запрет в конфиге, WAF
«Не удаётся найти DNS-адрес», DNS_PROBE_FINISHED_NXDOMAINнет кодаДомен не резолвится, до сервера запрос не дошёлDNS-записи, делегирование, срок регистрации домена
500 Internal Server Error500Сервер нашёл обработчик, но упал при выполненииЛоги ошибок, PHP-фатал, права, .htaccess

Практическое правило: если страница переехала — 301 на новый адрес; если удалена навсегда и замены нет — 410 или 404; если адреса никогда не было — 404. Разница между 301 и 302 разобрана в статье 301 vs 302 редирект.

Почему выдаёт ошибку 404: 9 частых причин

  1. Опечатка в URL. Самая частая причина. Пользователь или внешний сайт указали неправильный путь.
  2. Удалённая или перемещённая страница. Контент был удалён, но редирект не настроен.
  3. Сломанный rewrite rule. В nginx или Apache неправильно настроена директива try_files или .htaccess.
  4. Проблемы с правами доступа к файлам. Веб-сервер не может прочитать файл из-за неправильных прав (chmod/chown). Чаще это даёт 403, но в связке nginx + PHP-FPM нечитаемый скрипт превращается в «File not found.» с кодом 404.
  5. Ошибка в routing (SPA). React/Vue/Angular приложения без fallback на index.html возвращают 404 при прямом переходе.
  6. Устаревший кэш CDN. CDN отдаёт закэшированный 404 после развёртывания новой страницы.
  7. Неправильная конфигурация DNS или nginx upstream. Запрос уходит на неправильный сервер или в другой server-блок, где такого пути нет.
  8. Регистр букв в адресе. На Linux файловая система чувствительна к регистру: /Price.pdf и /price.pdf — разные файлы. На локальной Windows-машине всё работало, на хостинге — 404.
  9. Неверный путь в API-запросе. «Ошибка API 404» обычно означает неправильную версию в пути (/v1/ вместо /v2/), лишний или недостающий слэш, опечатку в имени эндпоинта или запрос к объекту, которого нет в базе.

Что делать, если сайт пишет 404: советы посетителю

  1. Проверьте адрес в строке браузера: лишний символ, точка в конце, кириллическая буква вместо латинской, пропущенный кусок пути.
  2. Обновите страницу без кэша — Ctrl+F5 в Windows или Cmd+Shift+R в macOS: браузер мог сохранить старый ответ.
  3. Поднимитесь на уровень выше: удалите из адреса последнюю часть после слэша или откройте главную и найдите материал через меню или поиск по сайту.
  4. Если ссылка пришла из поисковика, откройте сохранённую копию или поищите заголовок страницы — материал мог переехать на новый адрес.
  5. Если страница нужна по работе — напишите владельцу сайта: он, скорее всего, не знает, что ссылка битая.

Если вместо 404 браузер пишет, что сайт или сервер не найден, — это ошибка DNS, а не 404; домен можно проверить через DNS-проверку. Код 404 в играх и мобильных приложениях — это ответ их собственного сервера, исправить который со своей стороны нельзя.

Как найти ошибки 404 на сайте и проверить код ответа

DevTools в браузере

Первым делом откройте DevTools (F12 → вкладка Network), воспроизведите ошибку и изучите полный запрос: URL, метод, заголовки. Обратите внимание на заголовок Referer — он покажет, откуда пришёл битый линк. Включите «Preserve log», если страница перенаправляет: иначе промежуточные ответы пропадут. В колонке Status видно и 404 основного документа, и 404 картинок, скриптов и стилей — битые ресурсы на живой странице тоже ошибки 404.

Онлайн-проверка enterno.io

Для быстрой проверки заголовков используйте HTTP Header Checker от Enterno.io — введите URL и получите полный список заголовков ответа, включая коды редиректов в цепочке. Если адрес перенаправляет, проверка редиректов покажет каждый шаг: так видно, заканчивается ли цепочка на 200 или упирается в 404.

Командная строка

Linux и macOS:

curl -I https://example.com/broken-page
curl -v https://example.com/broken-page 2>&1 | head -50
# только код ответа
curl -o /dev/null -s -w "%{http_code}\n" https://example.com/broken-page

Windows 10 и 11 (в cmd и PowerShell есть встроенный curl.exe):

curl.exe -I https://example.com/broken-page

Флаг -I отправляет HEAD-запрос. Некоторые приложения отвечают на HEAD иначе, чем на GET, поэтому при расхождении с браузером проверьте обычным запросом: curl -s -o /dev/null -w "%{http_code}" URL.

Логи веб-сервера

Проверьте логи веб-сервера:

# nginx
tail -f /var/log/nginx/access.log | grep " 404 "
tail -f /var/log/nginx/error.log

# Apache
tail -f /var/log/apache2/access.log | grep " 404 "
tail -f /var/log/apache2/error.log

Чтобы увидеть, какие адреса чаще всего отдают 404 и откуда на них приходят, для стандартного формата логов (combined) подойдут:

# топ-20 несуществующих адресов
awk '$9 == 404 {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

# откуда пришли (Referer)
awk '$9 == 404 {print $11}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

Если в логе включён другой формат, номера полей будут другими. Подробно про форматы и расположение файлов — в статье логи nginx.

Яндекс Вебмастер и Google Search Console

В Яндекс Вебмастере адреса с ошибками видны в разделе «Индексирование» → «Статистика обхода»: там можно отфильтровать страницы по коду ответа 4xx. В Google Search Console откройте «Индексирование» → «Страницы»: статус «Не найдено (404)» — настоящие 404, «Ложная ошибка 404» — soft 404 (о них ниже). Эти отчёты показывают то, что увидел поисковый робот, включая битые ссылки с чужих сайтов, которые вы не найдёте обходом собственного сайта.

Как исправить ошибку 404: решения для разных платформ

nginx: настройка try_files и кастомная страница

server {
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    error_page 404 /404.html;
    location = /404.html {
        internal;
    }
}

Директива internal запрещает открывать /404.html напрямую, а сам ответ сохраняет код 404. Не пишите error_page 404 =200 /404.html: так страница ошибки уйдёт с кодом 200 — это готовая soft 404. Синтаксис описан в документации nginx по error_page. После правки: nginx -t && systemctl reload nginx.

nginx + PHP-FPM: «File not found.»

Если вместо страницы белый экран с текстом File not found., а в error.log — Primary script unknown, PHP-FPM получил неверный путь к скрипту. Проверьте, что в блоке PHP задан правильный root и путь собирается от него:

location ~ \.php$ {
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/run/php/php-fpm.sock;
}

Путь к сокету зависит от версии PHP и дистрибутива. Также убедитесь, что пользователь пула PHP-FPM может читать файлы сайта.

Apache (.htaccess)

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
ErrorDocument 404 /404.html

В ErrorDocument указывайте локальный путь, а не полный адрес вида https://example.com/404.html: с полным URL Apache отправляет клиенту редирект, и исходный код 404 теряется. Это прямо оговорено в документации Apache по ErrorDocument. Если .htaccess не срабатывает вовсе, проверьте, что для каталога разрешено AllowOverride All и включён mod_rewrite (a2enmod rewrite в Debian/Ubuntu). Подробнее — в руководстве по файлу .htaccess.

WordPress

Перейдите в Настройки → Постоянные ссылки и нажмите «Сохранить» — это перезапишет правила .htaccess. Если не помогает, проверьте права файла: chmod 644 .htaccess. На nginx .htaccess не читается — нужен try_files $uri $uri/ /index.php?$args; из примера выше. Если 404 появились после смены структуры ссылок или переименования ярлыков записей, настройте 301 со старых адресов.

React / Vue / Next.js SPA

Для static-хостинга настройте fallback на index.html:

# nginx
location / {
    try_files $uri $uri/ /index.html;
}

У этого способа есть обратная сторона: сервер отвечает 200 на любой адрес, включая несуществующие, и роутер приложения рисует экран «не найдено» уже с кодом 200. Для SEO-важных разделов нужен серверный рендеринг или правило, отдающее 404 для неизвестных маршрутов. В Next.js (App Router) для этого есть функция notFound() из next/navigation и файл app/not-found.tsx — такой ответ уходит с кодом 404.

301 редиректы для удалённых страниц

Вместо 404 возвращайте 301, если страница переехала — это сохранит SEO-вес:

location = /old-url {
    return 301 https://example.com/new-url;
}

В Apache то же самое делается одной строкой в .htaccess: Redirect 301 /old-url https://example.com/new-url. Редиректьте на близкую по смыслу страницу, а не всё подряд на главную, и не стройте цепочки из нескольких переходов. Если после правок браузер пишет о бесконечной переадресации (ERR_TOO_MANY_REDIRECTS), ищите правило, которое перенаправляет адрес сам на себя.

Soft 404 и Google Search Console

Soft 404 («мягкая» 404) — более коварная проблема: страница показывает посетителю содержимое «не найдено», но сервер при этом возвращает статус 200 OK вместо настоящего 404. Google Search Console помечает такие страницы в отчёте Индексирование → Страницы со статусом «Ложная ошибка 404». Они тратят краулинговый бюджет и удерживают мёртвые URL в индексе.

Частые причины soft 404:

  • Пустая страница или «ничего не найдено» отдаётся со статусом 200 (страницы поиска, отфильтрованные категории);
  • JavaScript-приложение рисует экран «не найдено» на клиенте, не выставляя статус-код;
  • Кастомная страница ошибки отдаётся через 200-редирект вместо настоящего ответа 404;
  • Массовый редирект удалённых страниц на главную или в корень раздела — Google в документации прямо называет это причиной soft 404;
  • Тонкие или почти пустые страницы, которые Google считает фактически «не найденными».

Принцип исправления один: возвращайте правильный статус-код. Реально отсутствующая страница должна отвечать 404 Not Found (или 410 Gone при удалении навсегда), а настоящая страница — 200 с полноценным содержимым. Для SPA настройте серверную или edge-логику, отдающую 404 для неизвестных маршрутов. Проверить, какой статус реально возвращает сервер (в отличие от того, что показывает браузер), можно проверкой HTTP статус-кода, а точное определение кода — на справочной странице 404 Not Found (RFC 9110).

Обратите внимание: результаты поиска по сайту с текстом «Ничего не найдено» сами по себе не ошибка — это нормальная страница. Проблемой они становятся, когда такие пустые выдачи попадают в индекс. Их закрывают от индексации через noindex или запрет в robots.txt, а не превращают в 404.

Как сделать страницу 404 правильно

Хорошая страница ошибки 404 возвращает посетителя на сайт, а не отпускает его обратно в поиск. Требования к ней:

  • Настоящий код 404 в ответе. Не редирект на /404.html и не 200. Проверяется одной командой curl -I по несуществующему адресу.
  • Понятное сообщение. «Такой страницы нет» и одна фраза о возможной причине: адрес изменился или в ссылке опечатка.
  • Путь дальше. Поиск по сайту, ссылка на главную, основные разделы или популярные материалы.
  • Оформление сайта. Шапка, меню и подвал такие же, как на остальных страницах, — посетитель должен понять, что он всё ещё на вашем сайте.
  • Лёгкость. Без тяжёлых скриптов и запросов к базе: при массовом переборе адресов ботами тяжёлая 404 нагружает сервер.
  • Узнаваемый заголовок. Слова «404» или «Страница не найдена» в <title> позволяют отфильтровать такие просмотры в Яндекс Метрике и найти, с каких страниц посетители на них попадают.

Где задаётся страница 404:

  • nginx — error_page 404 /404.html; (пример выше);
  • Apache — ErrorDocument 404 /404.html с локальным путём;
  • PHP-приложение — перед выводом шаблона вызвать http_response_code(404);;
  • WordPress — файл 404.php в папке темы; WordPress сам отдаёт с ним код 404;
  • Next.js — app/not-found.tsx (App Router) или pages/404.js (Pages Router).

Страницы 404 и SEO: что делать с удалёнными адресами

Одиночные 404 на сайте — норма: несуществующие адреса будут всегда, и поисковики это понимают. Вредят другие ситуации: 404 на страницах, которые были в индексе и получали трафик, битые внутренние ссылки, по которым робот раз за разом уходит в никуда, и soft 404, которые не выпадают из индекса.

Как поступить с каждой удалённой страницей:

  • Есть замена по смыслу (новая версия статьи, аналогичный товар, новый раздел) — 301 на неё.
  • Замены нет, страница удалена навсегда — 410 или 404. По документации Google все коды 4xx, кроме 429, обрабатываются одинаково: URL удаляется из индекса, поэтому разница между 404 и 410 для Google невелика.
  • Страница временно недоступна — не 404, а 503 с заголовком Retry-After, чтобы робот вернулся позже.
  • Нужно убрать страницу из Яндекса быстрее — после того как адрес начал отвечать 404 или 410, отправьте его в Вебмастере через «Инструменты» → «Удаление страниц из поиска».

При переезде сайта или смене структуры URL составьте таблицу соответствия «старый адрес → новый» заранее — по чек-листу миграции сайта. Массовые 404 после переезда — самая дорогая по трафику разновидность этой ошибки.

Профилактика 404 ошибок

  • Регулярно сканируйте сайт на битые ссылки — делайте это минимум раз в месяц.
  • Настройте мониторинг ключевых страниц через Uptime Monitoring от Enterno.io — получайте алерты, если страница внезапно начинает возвращать 404.
  • Используйте 301 редиректы при любых изменениях URL-структуры.
  • Мониторьте Google Search Console и Яндекс Вебмастер — отчёт «Индексирование» → «Страницы» в GSC и «Статистика обхода» в Вебмастере показывают все 404, которые увидели роботы.
  • Раз в неделю смотрите топ 404 в логах — командой awk из раздела выше. Повторяющийся адрес с внешним Referer — кандидат на 301.
  • Создайте информативную 404-страницу с поиском по сайту, популярными ссылками и формой обратной связи.
  • После деплоя проверяйте главные адреса через HTTP Header Checker — сломанное rewrite-правило обычно видно сразу.

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

Что означает ошибка 404 на сайте?

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

Влияет ли 404 на SEO?

Одиночные 404 — нормально. Но массовые 404 на ранее индексируемых страницах теряют трафик и ссылочный вес этих адресов и тратят краулинговый бюджет. Если у удалённой страницы есть замена, ставьте 301.

Что лучше — 404 или 410?

410 Gone — когда ресурс точно удалён навсегда. 404 — когда причина неизвестна или временная. Google обрабатывает оба кода почти одинаково; 410 честнее описывает намеренное удаление.

Можно ли отлавливать 404 автоматически?

Да, используйте мониторинг Enterno.io с expected_code=200 — любое отклонение триггерит алерт в Email/Telegram/Slack. Для поиска битых ссылок по всему сайту дополнительно смотрите отчёты Вебмастера и логи сервера.

Почему после деплоя новой страницы я получаю 404?

Три частые причины: (1) CDN-кэш — сделайте purge, (2) OPcache в PHP — перезапустите php-fpm, (3) rewrite rules не перечитались — reload nginx/apache. Если адрес содержит заглавные буквы, проверьте и регистр в имени файла.

Чем код 404 отличается от «сервер не найден»?

При 404 сервер нашёлся и ответил. При «сервер не найден» браузер не смог получить IP-адрес домена через DNS и до сервера не дошёл — причину ищут в DNS-записях и регистрации домена, а не в файлах сайта.

Проверьте ваш сайт прямо сейчас

Проверить HTTP-статус сайта →
Другие статьи: HTTP
HTTP
HTTP-заголовки: полный разбор запроса и ответа сервера
10.03.2025 · 1 721 просм.
HTTP
Жизненный цикл HTTP-запроса: от URL до готовой страницы
16.03.2026 · 1 246 просм.
HTTP
Ошибка 400 Bad Request: что значит код и как исправить
13.07.2026 · 1 143 просм.
HTTP
HTTP-методы: GET, POST, PUT, DELETE и другие
16.03.2026 · 1 068 просм.