Коды ответа сервера HTTP (200, 301, 304, 404, 410, 503) и их влияние на индексацию
1. Архитектура и принцип работы
Краулер запрашивает URL, сервер отвечает трёхзначным кодом и заголовками. Робот читает код первым делом и по нему решает судьбу адреса. 200 — контент отдаётся, страница участвует в индексации. 301 — постоянный редирект, вес и сигналы переезжают на новый URL, старый вычищается. 302/307 — временный, сигналы остаются на исходнике. 304 — условный запрос (If-Modified-Since / If-None-Match), тело не передаётся, робот берёт закэшированную копию и не тратит краулинговый бюджет. 404 — адреса нет, но сигналы могут копиться, страница выпадает медленно. 410 — удалено навсегда, выпадение быстрое и жёсткое. 503 с Retry-After — временная недоступность, робот откладывает обход и не выкидывает URL. Путаница кодов (200 на странице-заглушке, 404 вместо 410, 302 вместо 301) — классическая причина дублей и просадок.
2. Математическая механика и триггеры ранжирования
Робот работает с заголовками: Content-Type, Location, Retry-After, ETag, Last-Modified, Cache-Control. Условный запрос строится на If-None-Match:
3. Специфика в Яндекс (YATI) vs Google
Яндекс жёстче реагирует на 5xx: серия ошибок сервера может снизить частоту обхода хоста, а длительный простой — выкинуть часть URL. Google терпеливее к 503 с Retry-After, но чувствителен к soft-404. По 301 обе системы передают сигналы, но Google быстрее склеивает и переносит; Яндекс может дольше держать старый URL в индексе. 410 Яндекс вычищает быстрее, чем Google, который иногда тянет с удалением. 304 обе системы понимают, но Яндекс активнее опирается на Last-Modified при планировании обхода. 302/307 оба считают временными, но Google склонен трактовать затянувшийся 302 как 301. Для 429 Google рекомендует Retry-After, Яндекс — снижение частоты запросов.
4. Нормативы SLA и диагностическая матрица
| Параметр / Метрика | Эталон по SLA | Критическая ошибка |
|---|---|---|
| Доля ответов 5xx за сутки | < 0.5% | > 1% или всплеск за час |
| Длина цепочки редиректов | 1-2 хопа | > 3 хопов или цикл |
| Доля soft-404 (200 на несуществующих) | 0% | > 0.1% от обхода |
5. Пошаговый инженерный протокол внедрения
- Снимите срез кодов из логов за 30 дней и постройте топ URL с 5xx и цепочками 3xx длиннее 3 хопов — начните с них.
- Замените soft-404 (200 + «страница не найдена») на честный 404 или 410 в зависимости от бизнес-логики: удалённый товар — 410, временно скрытый — 404.
- Настройте ETag/Last-Modified для статики и проверьте, что повторный запрос отдаёт 304, а не полный 200 с телом.
- Введите мониторинг доли 5xx и алерт при превышении 0.5% за час; для плановых работ отдавайте 503 с Retry-After.
# Nginx: честные коды и 503 на обслуживании
location / { try_files $uri $uri/ =404; }
error_page 404 /404.html;
# плановые работы
if (-f /var/www/maintenance.on) { return 503; }
add_header Retry-After 3600 always;
# статика с ETag
location ~* \.(css|js|png|jpg|svg)$ { expires 30d; etag on; add_header Cache-Control "public, max-age=2592000"; }
6. Типичные ошибки при оптимизации
- Отдавать 200 на страницах-заглушках и пустых категориях — робот индексирует мусор, раздувается индекс, падает качество.
- Ставить 302 вместо 301 при постоянном переезде — сигналы не переносятся, старый и новый URL конкурируют.
- Закрывать временные работы через 404 вместо 503 — робот выкидывает URL, после восстановления трафик возвращается неделями.
