Каждый раз, когда браузер обращается к серверу, сервер отвечает трёхзначным числом. Большинство пользователей видят его только когда что-то идёт не так — красный экран с «404» или «500». Но эти числа присутствуют в каждом запросе, и их правильное использование напрямую влияет на индексацию, краулинговый бюджет и позиции в поиске.
Как это работает
HTTP-статус — первая строка ответа сервера. Браузер, поисковый бот, любой HTTP-клиент смотрит на него прежде чем делать что-либо с контентом.
Структура проста: сотые означают информационные ответы, двухсотые — успех, трёхсотые — перенаправление, четырёхсотые — ошибка на стороне клиента, пятисотые — ошибка на стороне сервера. Логика не изменилась с 1996 года — именно поэтому её стоит знать.
2xx — Успех
Всё прошло штатно. Сервер получил запрос, понял его и обработал.
200 OK — стандартный успешный ответ. Страница найдена, контент отдан. Именно этот код должна возвращать каждая нормально работающая страница сайта. Важная деталь: 200 не означает «страница полезна» — только то, что сервер ответил без ошибок.
201 Created — запрос выполнен и в результате создан новый ресурс. Типичный ответ REST API после успешного POST: пользователь создан, заказ принят, запись добавлена. На веб-страницах почти не встречается.
204 No Content — запрос обработан успешно, но возвращать нечего. Часто используется в API для операций типа DELETE или для отправки аналитических событий — клиент сообщает серверу о действии, сервер подтверждает получение, контент не нужен.
206 Partial Content — сервер отдал часть ресурса по запросу с заголовком Range. Именно так работает потоковое видео: браузер запрашивает не весь файл целиком, а нужный фрагмент. Позволяет возобновлять прерванные загрузки.
304 Not Modified — ресурс не изменился с момента последнего запроса. Браузер или поисковый бот прислал условный запрос с If-Modified-Since или If-None-Match, и сервер подтверждает: кэшированная копия актуальна. Тело ответа пустое — экономия трафика для пользователя и краулингового бюджета для поисковика.
3xx — Редиректы
Запрашиваемый ресурс находится по другому адресу. Браузер и поисковый бот должны перейти туда.
301 Moved Permanently — ресурс переехал навсегда. Поисковик передаёт ссылочный вес на новый URL и со временем заменяет старый в индексе. Это правильный код при переезде домена, смене структуры URL, переходе с HTTP на HTTPS. Подробнее — в материале «301 или 302: что выбрать».
302 Found — временное перенаправление. Старый URL остаётся в индексе, ссылочный вес не передаётся. Правильный выбор для технических работ, A/B тестирования, сезонных страниц — всего, что вернётся на место.
303 See Other — после обработки запроса (обычно POST) клиент должен перейти по GET на другой адрес. Стандартный паттерн в веб-формах: отправил форму → сервер обработал → 303 на страницу-подтверждение. Предотвращает повторную отправку при нажатии «Назад».
304 Not Modified — см. раздел 2xx выше. Формально относится к 3xx, но не является редиректом — это кэширующий ответ.
307 Temporary Redirect — временный редирект, гарантирующий сохранение метода запроса. В отличие от 302, браузер не конвертирует POST в GET. Нужен когда важно передать тело запроса на новый адрес без изменений.
308 Permanent Redirect — то же, что 301, но с гарантией сохранения метода. POST остаётся POST. Используется в API и там, где нельзя потерять тело запроса при постоянном переезде.
4xx — Ошибки клиента
Что-то не так с запросом: адрес неверный, прав нет, запрос некорректный.
400 Bad Request — сервер не смог разобрать запрос из-за синтаксической ошибки. Некорректные параметры, невалидный JSON в теле, неправильно закодированный URL. Ошибка на стороне отправителя.
401 Unauthorized — требуется аутентификация. Клиент не передал учётные данные или передал неверные. Несмотря на название, речь именно об аутентификации (кто вы?), а не авторизации (что вам можно?).
403 Forbidden — сервер понял запрос, но отказывается его выполнить. Пользователь идентифицирован, но доступа нет. Закрытый раздел сайта, защищённый файл, IP заблокирован. В отличие от 401, повторная аутентификация не поможет.
404 Not Found — ресурс не найден. Самый известный HTTP-код. Может означать как «страница удалена», так и «такой страницы никогда не существовало», так и «URL введён неправильно». Поисковик продолжает периодически проверять 404-страницы — вдруг они вернутся.
410 Gone — ресурс удалён намеренно и окончательно. В отличие от 404, чётко сигнализирует: этого не будет. Google быстрее убирает такие URL из индекса и прекращает тратить краулинговый бюджет на повторные проверки. Используйте 410 когда намеренно удаляете страницы — это честнее и эффективнее для SEO, чем просто 404.
429 Too Many Requests — слишком много запросов за короткий период. Механизм rate limiting: сервер защищается от перегрузки или злоупотреблений. Обычно сопровождается заголовком Retry-After с рекомендуемым временем ожидания.
451 Unavailable For Legal Reasons — контент недоступен по юридическим причинам: решение суда, требование регулятора, авторские права. Код создан в 2015 году — название отсылает к роману Рэя Брэдбери. В России применяется для страниц, заблокированных по решению РКН.
5xx — Ошибки сервера
Запрос корректный, но сервер не смог его выполнить. Проблема на стороне сервера.
500 Internal Server Error — что-то пошло не так на сервере, но что именно — неизвестно. Необработанное исключение в коде, баг в приложении, ошибка конфигурации. Универсальный ответ «сервер сломался».
502 Bad Gateway — промежуточный сервер (Nginx, балансировщик) получил некорректный ответ от вышестоящего (приложения, бэкенда). Типично при падении приложения за reverse proxy.
503 Service Unavailable — сервер временно недоступен: перегрузка или плановые технические работы. При корректном использовании должен сопровождаться заголовком Retry-After. Поисковик с таким заголовком подождёт и не удалит страницы из индекса. Без него — долгий 503 воспринимается как постоянное падение.
504 Gateway Timeout — промежуточный сервер не дождался ответа от вышестоящего в отведённое время. Бэкенд слишком долго обрабатывал запрос. Типично при тяжёлых запросах к базе данных или медленных внешних сервисах.
Влияние на SEO
HTTP-статус — один из первых сигналов, которые видит поисковый бот при краулинге. Неправильный код приводит к прямым потерям: страницы выпадают из индекса, ссылочный вес растворяется, краулинговый бюджет тратится впустую.
| Код | Поведение Яндекса и Google |
|---|---|
| 200 | Страница индексируется нормально |
| 301 | Вес передаётся на новый URL, старый убирается из индекса |
| 302 | Старый URL остаётся в индексе, вес не передаётся |
| 304 | Кэшированная версия остаётся актуальной, краулинг экономится |
| 404 | Страница периодически перепроверяется, медленно убирается |
| 410 | Страница быстро убирается из индекса, проверки прекращаются |
| 500/503 | Временно не индексируется; долгая серия = потеря позиций |
Три практических правила:
Постоянные переезды — только 301. 302 при переезде домена — одна из самых дорогих SEO-ошибок: позиции нового домена строятся с нуля, пока старый держит весь накопленный вес.
Удалённые страницы — 410, не 404. Если страница не вернётся — скажите об этом явно. Поисковик перестанет тратить бюджет на её проверку.
503 с Retry-After при работах. Плановое обслуживание без этого заголовка выглядит для поисковика как отказ сервера.
Справочная таблица
| Код | Название | Значение |
|---|---|---|
| 200 | OK | Успешный запрос |
| 201 | Created | Ресурс создан |
| 204 | No Content | Успех, тело пустое |
| 206 | Partial Content | Частичный ответ (Range) |
| 301 | Moved Permanently | Постоянный редирект |
| 302 | Found | Временный редирект |
| 303 | See Other | Редирект после POST |
| 304 | Not Modified | Кэш актуален |
| 307 | Temporary Redirect | Временный (метод сохраняется) |
| 308 | Permanent Redirect | Постоянный (метод сохраняется) |
| 400 | Bad Request | Некорректный запрос |
| 401 | Unauthorized | Требуется аутентификация |
| 403 | Forbidden | Нет доступа |
| 404 | Not Found | Не найдено |
| 410 | Gone | Удалено навсегда |
| 429 | Too Many Requests | Слишком много запросов |
| 451 | Unavailable For Legal Reasons | Заблокировано по закону |
| 500 | Internal Server Error | Ошибка сервера |
| 502 | Bad Gateway | Ошибка шлюза |
| 503 | Service Unavailable | Сервер недоступен |
| 504 | Gateway Timeout | Таймаут шлюза |