Каждый ответ сайта начинается с трёхзначного кода. Первая цифра сразу говорит, что происходит: 2xx — всё хорошо, 3xx — вас перенаправили, 4xx — проблема на стороне запроса, 5xx — сломалось на сервере. Разберём коды, которые встречаются в жизни, и главное — что делать, если ошибку выдаёт ваш сайт.
Шпаргалка по группам
- 2xx — успех. 200 OK — страница отдана; 201 Created — объект создан (ответ API); 204 No Content — успешно, но тела нет;
- 3xx — перенаправление. 301 — страница переехала навсегда (важно для SEO), 302 — временно, 304 Not Modified — «бери из кеша»;
- 4xx — ошибка запроса. Клиент попросил то, чего нет, или то, что нельзя;
- 5xx — ошибка сервера. Запрос нормальный — сломалось на принимающей стороне.
Частые 4xx: «виноват» запрос
403 Forbidden — доступ запрещён. У файла нет прав на чтение (на хостинге: права 644 для файлов, 755 для папок), либо доступ закрыт правилом в .htaccess, либо ваш IP забанен.
404 Not Found — страницы нет по этому адресу. Если это ваш сайт: битая ссылка, страницу удалили или URL сменился без 301-редиректа. Массовые 404 после переезда сайта — сигнал настроить редиректы со старых адресов.
429 Too Many Requests — слишком часто стучитесь: сработал лимит запросов. Классика при работе парсеров и ботов — добавьте паузы.
Частые 5xx: сломалось на сервере
500 Internal Server Error — универсальное «что-то упало». У сайтов на PHP чаще всего это фатальная ошибка кода или битый .htaccess. Что делать: смотреть лог ошибок (на хостинге — в панели, на VPS — /var/log/) и включить вывод ошибок PHP на время отладки.

502 Bad Gateway — веб-сервер (nginx) жив, а приложение за ним (php-fpm, node, python) не отвечает: упало или не запустилось. Лечится перезапуском бэкенда: systemctl restart php8.2-fpm — и поиском причины падения в логах.
503 Service Unavailable — сервис временно недоступен: техработы, перегрузка или сайт кладёт DDoS-атака. Если 503 без видимой причины и сервер еле дышит — проверьте нагрузку и фильтрацию трафика.
504 Gateway Timeout — бэкенд отвечает, но слишком долго: тяжёлый запрос к базе, внешний API завис. Оптимизируйте медленное место или поднимайте таймауты осознанно.
Кто виноват: памятка для владельца сайта
- Ошибка у всех посетителей → проблема на сервере: смотрите логи;
- Ошибка только у вас → кеш браузера, VPN, ваш IP в бане;
- 5xx появились после обновления кода/плагина → откатите последнее изменение;
- 5xx под нагрузкой → ресурсов не хватает: пора переезжать с хостинга на VPS или брать тариф мощнее.
Менее частые коды, которые полезно узнавать в лицо
- 401 Unauthorized — не путать с 403: 401 значит «представьтесь» (нет или протухла авторизация), 403 — «я вас знаю, но нельзя»;
- 405 Method Not Allowed — классика при отладке API: шлёте POST туда, где ждут GET;
- 410 Gone — «удалено навсегда»: в отличие от 404, прямо говорит поисковикам выкинуть страницу из индекса — полезно при чистке сайта;
- 413 Content Too Large — файл больше лимита загрузки: крутите client_max_body_size в nginx и upload_max_filesize в PHP;
- 451 Unavailable For Legal Reasons — заблокировано по юридическим причинам.
Как самому проверить код ответа
Три способа за 10 секунд:
- Терминал:
curl -I https://site.ru— первая строка ответа и есть код (HTTP/2 200). Флаг -L покажет всю цепочку редиректов; - Браузер: F12 → вкладка Network → обновить страницу — колонка Status покажет коды всех запросов, включая картинки и скрипты (красным — ошибки);
- Для всего сайта: Яндекс.Вебмастер и Search Console ведут отчёты по кодам ответов — там всплывают массовые 404 и 5xx, которые вы сами не заметите.
Свои страницы ошибок вместо стандартных
Голый «502 Bad Gateway» на белом фоне пугает посетителей и роняет доверие. В nginx свои страницы подключаются парой строк в конфиге сайта:
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
Хорошая страница ошибки содержит: человеческое объяснение («мы уже чиним»), ссылку на главную и поиск. Для 404 полезно добавить популярные разделы — часть потерявшихся посетителей останется на сайте. На виртуальном хостинге страницы ошибок обычно настраиваются в панели управления без правки конфигов.
Узнавать об ошибках раньше пользователей
Худший сценарий: сайт сутки отдаёт 500, а вы узнаёте из письма клиента. Минимальный набор мониторинга — бесплатный:
- Внешний аптайм-монитор (UptimeRobot и аналоги): раз в 1–5 минут запрашивает сайт и шлёт алерт в Telegram, если код ответа не 200;
- Яндекс.Вебмастер — раздел «Индексирование» покажет рост 404 и 5xx с точки зрения поискового робота;
- Крон-скрипт на самом сервере:
curl -s -o /dev/null -w '%{http_code}' https://site.ru— и уведомление, если ответ не 200. Подойдёт даже самый дешёвый VPS в роли «сторожа» для основного сервера.
301 или 302: мини-ликбез по редиректам
Оба «перенаправляют», но по-разному: 301 — навсегда, поисковики склеивают старый адрес с новым и передают ему вес; 302 — временно, вес остаётся у старого адреса. Практика: переезд страницы или домена — всегда 301; временная акционная страница или A/B-тест — 302. Перепутанный 302 вместо 301 при переезде — классическая причина просадки SEO-позиций.
Частые вопросы
Чем 502 отличается от 504?
502 — приложение за веб-сервером не отвечает вообще (упало), 504 — отвечает, но не успевает за отведённое время (тормозит). Диагностика разная: в первом случае ищите причину падения, во втором — медленное место.
Что значит ошибка 520/521/522?
Это не стандарт HTTP, а коды CDN-прокси (Cloudflare и аналогов): прокси не смог достучаться до вашего сервера. Проверяйте сам сервер — он выключен, файрвол блокирует прокси, или порт закрыт.
Влияют ли ошибки на SEO?
Да: массовые 404 тратят краулинговый бюджет, длительные 5xx приводят к выпадению страниц из индекса. Мониторьте ошибки в Вебмастере и Search Console; стабильный хостинг — база, выбирайте по аптайму и отзывам в рейтинге.
Что за ошибка 499?
Нестандартный код nginx: посетитель закрыл соединение, не дождавшись ответа. Единичные 499 — норма (люди нетерпеливы), массовые — сигнал, что сайт отвечает слишком долго: смотрите, что тормозит бэкенд.
Почему ошибку вижу я, а другие — нет?
Три обычных причины: кеш браузера (обновите с Ctrl+F5), кеш DNS (вы ходите на старый сервер после переезда) или бан вашего IP файрволом/анти-DDoS. Проверка в режиме инкогнито и с мобильного интернета быстро сужает круг подозреваемых.
Бывают ли коды 1xx?
Да, служебные: 100 Continue («присылай тело запроса»), 101 Switching Protocols (переход на WebSocket). В браузере вы их не увидите — они живут внутри протокола, знать о них нужно разве что разработчикам API.
Шпаргалка: код → первое действие
| Код | Смысл | Первое действие владельца сайта |
|---|---|---|
| 403 | Доступ запрещён | Права файлов 644/755, правила в .htaccess |
| 404 | Нет страницы | Проверить URL, настроить 301 со старых адресов |
| 429 | Слишком много запросов | Найти, кто спамит: логи access.log |
| 500 | Ошибка приложения | Открыть error_log — причина написана там |
| 502 | Бэкенд не отвечает | systemctl restart php-fpm + логи |
| 503 | Перегрузка/техработы | Проверить нагрузку, DDoS, лимиты хостинга |
| 504 | Бэкенд не успевает | Найти медленный запрос (база, внешний API) |
Читаем access.log: находим ошибки в массе
Отдельная ошибка — случай; статистика ошибок — диагноз. Всё, что сервер отвечал посетителям, лежит в access.log (на VPS — /var/log/nginx/access.log, на хостинге — раздел «Журналы»). Пара однострочников для быстрой картины:
awk '{print $9}' access.log | sort | uniq -c | sort -rn
— сводка «сколько ответов каким кодом»: если 404 или 500 исчисляются тысячами, у сайта системная проблема, а не случайность. Копнуть глубже:
grep ' 404 ' access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head
— ТОП URL-адресов, отдающих 404: сразу видно битую ссылку в шаблоне, пропавшую картинку или бота, долбящего несуществующий wp-login. Аналогично для 500 — только вместо URL смотрите время: всплеск ошибок в 03:00 каждую ночь обычно совпадает с бэкапом или кроном. Пять минут с awk экономят час гадания.
Итог
Запомнить стоит пять кодов: 403 — права, 404 — нет страницы, 500 — ошибка кода, 502 — упал бэкенд, 503 — перегрузка. Первое действие при любой 5xx — логи сервера: в 9 случаях из 10 причина написана там прямым текстом.