net::ERR_ABORTED 404 (Not Found): как найти файл и исправить
Строка GET https://example.ru/js/app.js net::ERR_ABORTED 404 (Not Found) в консоли означает, что браузер запросил ресурс (скрипт, стили, картинку, fetch-запрос), а сервер ответил 404: такого файла по этому адресу нет. Причина почти всегда в пути, сборке или кэше. Найти файл можно в панели Network.
Обновлено 11 октября 2026 г.
Что значит net::ERR_ABORTED 404
У этой записи две части. 404 (Not Found) — это настоящий HTTP-статус: сервер ответил, что ресурса по адресу нет. net::ERR_ABORTED — сетевой код браузера, означающий, что загрузка была прервана и ресурс не получен. Искать нужно причину 404, ERR_ABORTED лишь фиксирует, что файл не загрузился.
Это ошибка для разработчика и владельца сайта. Посетитель её не увидит, но может заметить следствия: страница без стилей, не работает меню, не показываются картинки. Если вы столкнулись с ней как посетитель, поможет обновление страницы (Ctrl+F5): возможно, вы получили устаревшую версию страницы, которая ссылается на удалённые файлы.
Как найти, какой файл вернул 404
- Откройте DevTools (
F12) и вкладку Console: в строке ошибки виден полный URL. Нажмите на него, чтобы увидеть ответ. - Перейдите во вкладку Network, включите «Disable cache», обновите страницу (
Ctrl+F5) и отфильтруйте запросы: введите в строку фильтраstatus-code:404или отсортируйте по колонке Status. - Посмотрите колонку Initiator: она показывает, какой файл или строка кода запросили ресурс.
- Сравните запрошенный URL с реальным расположением файла на сервере: регистр букв, папка, расширение, хэш в имени.
- Проверьте адрес снаружи через проверку кода ответа: она подтвердит, что сервер действительно отдаёт 404.
Частые причины и исправления
Относительные пути на вложенных страницах
Адрес src="js/app.js" без начального слэша браузер отсчитывает от текущего каталога. На странице /blog/post/ он превратится в /blog/post/js/app.js, хотя файл лежит в /js/app.js. Используйте пути от корня: /js/app.js.
Тег base href
Если в <head> задан <base href="...">, все относительные пути, кроме начинающихся с /, считаются от него. Неверный base ломает загрузку ресурсов на всех страницах. Проверьте значение, оно должно заканчиваться слэшем: <base href="/">.
Сборка и хэши в именах файлов
- Сборщики (Vite, webpack, Next.js) добавляют хэши в имена:
app.3f2a1c.js. После деплоя старые файлы удаляются, а закэшированный HTML или кэш CDN по-прежнему ссылается на них. Итог: 404 иChunkLoadErrorу тех, кто открыл страницу до деплоя. - Сайт лежит в подкаталоге, а сборка ждёт корня. В Vite задаётся
base, в Create React App —homepage, в Next.js —basePathиassetPrefix. См. React SPA и Next.js. - Файлы не попали на сервер: не загрузилась папка
dist/buildили артефакт деплоя собран без статики. - Регистр букв: на Linux
Logo.pngиlogo.png— разные файлы, а на Windows и macOS обычно одинаковые, поэтому локально работает, а на сервере нет.
Кэш и CDN
HTML с устаревшими ссылками можно получить из кэша браузера, CDN или прокси. Сбросьте кэш CDN после деплоя и не кэшируйте HTML надолго, а файлы с хэшем в имени кэшируйте на долгий срок. Старые хэшированные файлы после деплоя лучше оставлять на сервере некоторое время.
Фоллбэк на index.html скрывает проблему
Для SPA часто настраивают отдачу index.html на любой неизвестный адрес. Если при этом правило захватывает и пути к файлам, отсутствующий скрипт возвращает HTML со статусом 200, и вместо понятного 404 вы получите ошибку вроде «Unexpected token <». Пути статических файлов должны честно отвечать 404:
location /assets/ {
try_files $uri =404;
expires 1y;
add_header Cache-Control "public, immutable";
}
location / {
try_files $uri /index.html;
}Подробнее о настройке: nginx, Apache и .htaccess.
Запросы fetch и XHR
Если 404 приходит на запрос fetch('/api/...'), проверьте маршрут бэкенда, префикс (/api/v1 и /api), метод и то, что обратный прокси проксирует именно этот путь. В Network у такого запроса тип fetch или xhr, и во вкладке Response виден ответ сервера.
Мелочи, которые тоже дают 404
/favicon.ico: браузер запрашивает его сам, даже если вы нигде не подключали иконку.- Файлы
.map(source maps): DevTools запрашивает карту, если в конце скрипта есть комментарийsourceMappingURL. - Удалённые плагины и темы CMS, на которые остались ссылки в шаблонах или в содержимом страниц.
- Картинки, перенесённые при смене структуры сайта.
Ресурсы на всех страницах: найдите массово
Если такая ошибка найдена на одной странице, на сайте их может быть сотни. Проверка битых ссылок пройдёт по странице и покажет статус каждой ссылки, картинки и скрипта.
На работающем сайте 404 на ассеты видят и боты, и посетители. В Monitor404 они попадают в сырой журнал как «шум от ассетов» и не смешиваются со страницами, которые люди действительно пытались открыть: так вы не потеряете в потоке картинок и скриптов битые страницы, которые стоит перенаправить 301-редиректом (о редиректах — 301).
Частые вопросы
Что значит net::ERR_ABORTED 404 (Not Found)?
Браузер запросил ресурс, сервер ответил 404, и загрузка не завершилась. Причина в отсутствующем файле или неверном адресе.
Как найти файл, который вернул 404?
Откройте DevTools (F12), вкладку Network, обновите страницу с Ctrl+F5 и найдите красные запросы со статусом 404. Колонка Initiator покажет, откуда запрошен файл.
Почему файл есть на сервере, но браузер получает 404?
Проверьте регистр букв в имени, относительные пути на вложенных страницах, base href, кэш CDN или браузера с устаревшим HTML и настройки подкаталога в сборке.
Влияет ли 404 на ассеты на SEO?
Сам по себе отсутствующий скрипт, стиль или картинка не делает страницу ошибочной, но может сломать её отображение, а недоступные ресурсы мешают поисковым роботам корректно отрисовать страницу.