Код 300 Multiple Choices означает, что запрошенному адресу соответствует несколько вариантов ресурса — например, версии страницы на разных языках, — и сервер предлагает клиенту выбрать один из них. В отличие от обычных редиректов автоматический переход происходит не всегда: без заголовка Location браузер остаётся на месте. Для владельца сайта код 300 почти всегда признак неточной настройки сервера, а не штатный режим работы.
Что означает код 300
300 — первый код группы редиректов 3xx, описанный в стандарте RFC 9110. Он сообщает: у ресурса есть несколько представлений, каждое со своим адресом, и сервер не может выбрать за клиента. В теле ответа сервер перечисляет доступные варианты — обычно в виде HTML-списка ссылок. Заголовок Location необязателен: стандарт разрешает указать в нём предпочтительный вариант, и только в этом случае возможен автоматический переход.
Главное отличие от 301 Moved Permanently и 302 Found: эти коды дают ровно один новый адрес, и браузер переходит по нему сам. 300 предлагает выбор и рассчитывает на решение человека. С тем же механизмом согласования контента связан код 406 Not Acceptable: при 406 сервер не нашёл ни одного подходящего варианта, при 300 — нашёл несколько и не смог выбрать. Место кода среди соседей — в полном списке кодов ответа HTTP.
Считает ли Tracker.ru 300 падением
Да, если проверка завершилась этим кодом. Tracker.ru автоматически следует по редиректам — до 10 переходов. Но переход возможен только при наличии заголовка Location, а в ответе 300 его часто нет. Тогда итоговым кодом проверки остаётся 300, а успешной считается только проверка с кодом 2xx. Сайт помечается недоступным, тип ошибки — «HTTP-ошибка», и вы получаете уведомление на email, в Telegram или по webhook. Реже итоговый 3xx означает, что редиректы зациклились или цепочка длиннее 10 переходов. Проверки идут из нескольких регионов. Код 300 обычно вызван настройкой самого сервера, поэтому фиксируется во всех регионах одинаково. Периоды недоступности отражаются в статистике аптайма.
Типичные причины
- Включённый MultiViews в Apache. Модуль согласования контента находит несколько файлов-вариантов (например, page.html.en и page.html.de), не может выбрать лучший и отвечает 300 со списком.
- Языковые версии без варианта по умолчанию. Сервер отдаёт страницу по заголовку Accept-Language, но для запросов без явного языка запасной вариант не задан.
- Редирект без заголовка Location. Приложение или конфигурация сервера возвращает код 300 вместо 301 или 302, а адрес перехода не указывает — браузеру некуда идти.
- Самописная логика выбора формата в API. Сервис отвечает 300, предлагая клиенту выбрать формат данных или версию API. Это допустимо по стандарту, но большинство клиентов такой ответ не понимает.
- Устаревший плагин или модуль CMS, который реализует «умные» редиректы через 300 вместо стандартных кодов.
- CDN или обратный прокси транслирует ответ источника. Сам CDN код 300 не генерирует, но честно передаёт его от вашего сервера — искать причину нужно на origin.
Что проверить владельцу сайта
- Откройте онлайн-проверку кода ответа своего сайта — она покажет реальный ответ сервера без кэша браузера и без регистрации.
- Изучите тело ответа: при 300 сервер обычно перечисляет варианты ресурса. По списку видно, между чем он не смог выбрать.
- Если используете Apache — проверьте, не включён ли MultiViews (директива Options в конфигурации или файле .htaccess), и задайте вариант по умолчанию для языковых версий.
- Если код 300 возвращает ваше приложение — замените его на постоянный редирект 301 или временный 302 с явным заголовком Location. Такой переход выполнят и браузеры, и мониторинг.
- Запросите страницу с разными заголовками Accept-Language и Accept: если ответ меняется, дело в согласовании контента.
- После исправления убедитесь, что проверка снова видит код 200.
Как часто встречается 300 на практике
В выборке Tracker.ru из десяти с лишним миллионов проверок код 300 зафиксирован 29 раз (по данным на июль 2026). Современные серверы выбирают вариант ресурса сами или используют обычные редиректы, поэтому «честный» 300 в живом трафике почти исчез.
Частые вопросы
Почему мониторинг показывает 300, а в браузере сайт открывается?
Браузер отправляет заголовки Accept-Language и Accept с вашими настройками, и сервер подбирает подходящий вариант — вы видите страницу с кодом 200. Запрос мониторинга таких предпочтений не передаёт, сервер не может выбрать и отвечает 300. Задайте вариант по умолчанию — и оба запроса получат 200.
300 — это ошибка или редирект?
Формально это код группы редиректов 3xx. Но в отличие от 301 или 302 он не обязан содержать адрес перехода, поэтому автоматически перейти по нему часто нельзя. Для мониторинга любой итоговый код вне группы 2xx означает недоступность — поэтому в отчёте 300 выглядит как ошибка.
Чем 300 отличается от 303 See Other?
303 See Other отправляет клиента за ответом на один конкретный адрес методом GET — выбор уже сделан сервером. 300 выбор не делает: он перечисляет варианты и ждёт решения клиента. Оба кода встречаются редко, но 303 браузеры обрабатывают автоматически.