Ошибка 404 Not Found — что значит и как исправить
HTTP 404 Not Found — самая известная ошибка веба. Означает «сервер работает, но запрашиваемая страница не найдена». В нормальной работе сайта 404 — это не падение (просто пользователь набрал кривой URL), но если 404 появляется на корневой странице или ключевых URL — это серьёзная проблема.
- 🚨 Сайт показывает «404 Not Found» или кастомную страницу «Страница не найдена»
- 🔍 Причина — сервер не нашёл запрашиваемого ресурса
- 🛠️ Если 404 на главной — катастрофа, если на одной странице — может быть нормально
- 🔁 Часто появляется после переезда, обновления CMS, изменения URL
Когда 404 — это нормально, а когда — катастрофа
Section titled “Когда 404 — это нормально, а когда — катастрофа”Нормально:
- Пользователь сам набрал несуществующий URL
example.com/abrakadabra - Бот сканирует сайт ища уязвимости (
example.com/wp-admin.phpна сайте без WordPress) - Удалили старую страницу и не сделали редирект
Катастрофа:
- Главная страница
example.com/отдаёт 404 - Все URL отдают 404
- 404 появилась после обновления/деплоя
В дашборде Monisite 404 на главном URL сайта считается падением (DOWN) и шлёт уведомление. Подробнее почему — в Типы проверок.
Частые причины
Section titled “Частые причины”1. Файл/контент удалён
Section titled “1. Файл/контент удалён”CMS удалила страницу, базу сбросили, файл стёрли. Простая причина — простое решение.
2. Изменился URL после переезда CMS
Section titled “2. Изменился URL после переезда CMS”Самая частая причина массовых 404. Переехали с WordPress на Tilda, со старой CMS на новую — URL поменялись. Старые ссылки в Google и соцсетях ведут на 404.
3. Ошибка в роутинге
Section titled “3. Ошибка в роутинге”В Laravel/Django/Rails/Express удалили или сломали маршрут. Все URL отдают 404, потому что фреймворк не знает что с ними делать.
4. Неправильная конфигурация nginx
Section titled “4. Неправильная конфигурация nginx”Пропали правила try_files или index. Часто после обновления конфига руками.
5. CMS на reinstall
Section titled “5. CMS на reinstall”WordPress/Bitrix только что переустановили, контент ещё не залит. 404 пока БД пустая.
6. Symlink на несуществующую папку
Section titled “6. Symlink на несуществующую папку”Деплой через symlink (Capistrano, Deployer): создали новый релиз, переключили симлинк, но папка релиза пуста или сломана.
7. Сайт удалён с хостинга
Section titled “7. Сайт удалён с хостинга”Закончились деньги на хостинге, хостер удалил аккаунт, домен теперь смотрит на placeholder-страницу с 404.
Как диагностировать
Section titled “Как диагностировать”1. Проверить какой именно URL отдаёт 404:
curl -I https://example.com/curl -I https://example.com/aboutcurl -I https://example.com/api/healthЕсли 404 везде — проблема с сайтом целиком. Если только на одной странице — это эта страница.
2. Лог nginx:
sudo tail -100 /var/log/nginx/access.log | grep " 404 "Видите много 404 от разных IP на разные URL — нормально (боты). Все 404 на ваш собственный URL — проблема.
3. Проверить файлы существуют:
ls -la /var/www/example.com/Если папка пустая или там не то что должно быть — нашли причину.
4. Проверить конфиг nginx:
sudo nginx -T | grep -A 20 'server_name example.com'Посмотреть root, index, try_files директивы.
Как исправить
Section titled “Как исправить”Сценарий A: главная отдаёт 404 после деплоя
- Откатить последний релиз
- Проверить что в папке
current/всё на месте
Сценарий B: 404 везде из-за роутинга
Laravel:
php artisan route:clearphp artisan route:cacheDjango: убедитесь что urls.py корректно подключён в settings.py.
Rails:
rails routes— посмотреть какие маршруты вообще зарегистрированы.
Сценарий C: переехали, старые URL не работают
Самое грамотное — настроить 301-редиректы со старых URL на новые. nginx:
location = /old-page { return 301 /new-page;}Это сохранит SEO-вес страниц.
Сценарий D: 404 потому что забыли индексный файл
location / { try_files $uri $uri/ /index.html; index index.html index.php;}Сценарий E: WordPress переустановили — 404 на постах
Зайдите в Настройки → Постоянные ссылки и нажмите Сохранить. Это пересоздаст .htaccess (Apache) или эквивалент.
Если 404 — это нормально
Section titled “Если 404 — это нормально”Если у вас сайт где нет главной страницы (например, чистое API), но Monisite алертит на 404:
- Создайте отдельный health-endpoint
/healthкоторый возвращает 200 - Добавьте этот URL в Monisite вместо главного
Или сделайте чтобы корневой URL возвращал хотя бы 200 с минимальным текстом — это полезно не только для мониторинга, но и для статусов CDN/балансировщиков.
Чем поможет Monisite
Section titled “Чем поможет Monisite”После переезда CMS, обновления CMS или деплоя часто первый кто замечает 404 — это случайный пользователь который потом не возвращается. С мониторингом вы узнаёте за 1-2 минуты.
Monisite:
- Проверяет ваш сайт каждую минуту из 3 регионов
- При появлении 404 на главной — сразу алерт
- В истории видно в какой момент началось — сразу понятно что-то с последним деплоем
Что дальше
Section titled “Что дальше”- Все коды ошибок
- Типы проверок — почему 4xx считается DOWN
- Ошибка DNS — когда домен не резолвится