Код 406 Not Acceptable означает, что сервер не может отдать ответ в формате, который клиент запросил в заголовках Accept. Формально это ошибка согласования форматов, но на практике 406 чаще возвращают защитные модули веб-сервера, посчитавшие запрос подозрительным. Для владельца сайта такой код — повод проверить фильтры на хостинге, а не искать проблему в контенте.
Что означает код 406
406 — клиентская ошибка из группы 4xx, описанная в стандарте RFC 9110. Запрашивая страницу, клиент перечисляет приемлемые варианты ответа в заголовках Accept (тип содержимого), Accept-Language (язык), Accept-Encoding (сжатие) и Accept-Charset (кодировка). Если у сервера нет подходящего варианта и он не готов отдать ответ «по умолчанию», возвращается 406. Место кода среди остальных — в полном списке кодов ответа HTTP.
Смежные коды легко перепутать. 415 Unsupported Media Type — зеркальная ситуация: сервер не принимает формат тела запроса, который прислал клиент. 406 — наоборот: сервер не может отдать ответ в формате, который клиент готов принять. От 400 Bad Request код отличается тем, что сам запрос корректен — не совпали только ожидания по формату ответа.
Считает ли Tracker.ru 406 падением
Да. Успешной Tracker.ru считает только проверку с кодом 2xx. Ответ 406 помечает сайт недоступным, тип ошибки — «HTTP-ошибка», и вы получаете уведомление на email, в Telegram или по webhook. Проверки идут из нескольких регионов, поэтому видно, во всех ли точках сервер отвечает одинаково. Периоды недоступности отражаются в статистике аптайма.
Типичные причины
- Сработал ModSecurity на Apache. Классика виртуального хостинга: при срабатывании защитного правила многие хостинги возвращают именно 406, а не 403. Под правило попадает форма, адрес с «подозрительными» параметрами или запрос мониторинга.
- Фильтр по заголовкам запроса. Анти-бот правила на сервере или CDN отклоняют запросы с непривычным User-Agent — например, от утилит вроде curl или от систем проверки доступности.
- API требует конкретный заголовок Accept. Метод отдаёт только JSON и возвращает 406 всем, кто не прислал Accept: application/json. Так ведут себя многие REST-API на популярных фреймворках.
- Включён MultiViews в Apache. Сервер пытается сам подобрать файл под запрошенный язык или формат; подходящего варианта нет — и вместо страницы уходит 406.
- Приложение не поддерживает запрошенный формат. Клиент просит данные в XML (например, суффиксом .xml в адресе), а приложение умеет отдавать только HTML и JSON.
- Правило на обратном прокси или CDN. Администратор настроил возврат 406 для отдельных стран, путей или сигнатур запросов.
Что проверить владельцу сайта
- Откройте онлайн-проверку кода ответа своего сайта — она покажет реальный ответ сервера без кэша браузера и без регистрации.
- Сравните с браузером. Если сайт открывается, а проверка получает 406 — сервер фильтрует запросы по заголовкам, и дело в защитном правиле.
- Загляните в логи веб-сервера и аудит-лог ModSecurity: там видно, какое правило сработало и на какую часть запроса.
- Напишите в поддержку хостинга: попросите найти сработавшее правило WAF и добавить исключение для вашего сайта или для проверок мониторинга.
- Если под мониторингом адрес API — убедитесь, что он отвечает на обычный GET-запрос без специальных заголовков, или поставьте на проверку другую страницу.
- Проверьте конфигурацию Apache: отключите MultiViews для каталога, если согласование форматов вам не нужно.
Как часто встречается 406 на практике
Код 406 попался в статистике Tracker.ru 27 раз за десять с лишним миллионов проверок (по данным на июль 2026). Причина в том, что браузеры и боты присылают заголовок Accept со значением */*, то есть согласны на любой формат, — честному 406 просто неоткуда взяться. А защитные фильтры, главный источник этого кода, чаще настроены отдавать 403 Forbidden.
Частые вопросы
Почему мониторинг показывает 406, а в браузере сайт открывается?
Запросы отличаются заголовками. Браузер отправляет привычный для сервера набор, а запрос системы мониторинга выглядит иначе — и попадает под защитное правило ModSecurity или анти-бот фильтр. Попросите хостинг найти сработавшее правило и добавить исключение — после этого проверки пойдут штатно.
Чем 406 отличается от 415 Unsupported Media Type?
Это зеркальные коды. 406 — сервер не может отдать ответ в формате, который клиент согласен принять. 415 — сервер не принимает формат тела самого запроса: например, клиент прислал XML, а API ждёт JSON. Проще запомнить так: 406 — про ответ, 415 — про запрос.
Может ли обычный посетитель увидеть 406?
Почти никогда: браузер соглашается на любой формат ответа, поэтому честное согласование не проваливается. Если посетители всё же жалуются на 406, их запросы почти наверняка блокирует защитный фильтр — по стране, IP или заголовкам. Проверьте правила WAF на сервере и CDN.