Главная » Ошибки Битрикс » Ошибка 404 в Битрикс: настройка страницы и причины

Ошибка 404 в Битрикс: настройка страницы и причины

Настройка страницы 404 в Битрикс: несуществующий адрес должен отдавать код 404, а не 200

Ошибка 404 сама по себе не поломка — это штатный ответ сервера о том, что страницы нет. Проблемы начинаются, когда 404 отдаётся там, где страница должна быть, или наоборот: несуществующий адрес возвращает код 200, и поисковики начинают индексировать пустышки.

Разберём, как в 1С-Битрикс устроена обработка несуществующих страниц, как настроить свою страницу 404, почему она обязана отдавать правильный код ответа и что делать с массовыми 404 после переезда сайта.

Как Битрикс обрабатывает 404

Когда запрошенный адрес не находится, отрабатывает файл /404.php в корне сайта. Он подключается как обычная страница — со своим шаблоном, меню и подвалом.

Минимальный рабочий вариант:

<?php
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/header.php');

$APPLICATION->SetTitle('Страница не найдена');
?>

<h1>Страница не найдена</h1>
<p>Возможно, адрес введён с ошибкой или страница была удалена.</p>
<p><a href="/">Вернуться на главную</a></p>

<?php require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/footer.php'); ?>

Главная ошибка: код ответа 200

Само по себе наличие красивой страницы 404 ничего не значит. Важно, какой HTTP-код сервер отдаёт вместе с ней.

Если страница выглядит как «не найдено», но отдаёт код 200, поисковик считает её обычной страницей и добавляет в индекс. Через полгода в выдаче оказываются сотни одинаковых «Страница не найдена» — это называют мягкой ошибкой 404.

Чтобы код был правильным, его нужно задать явно:

<?php
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/header.php');

// сообщаем ядру и серверу, что страница не найдена
CHTTP::SetStatus('404 Not Found');
@define('ERROR_404', 'Y');

$APPLICATION->SetTitle('Страница не найдена');
?>

Константа ERROR_404 нужна ядру, а CHTTP::SetStatus отправляет сам заголовок. Проверить результат можно инструментами разработчика в браузере на вкладке «Сеть» — в строке запроса должно стоять 404, а не 200.

Нужна помощь с Битрикс?





    Настройки в административной части

    Поведение при отсутствии страницы настраивается в разделе НастройкиНастройки продуктаНастройки модулейУправление структурой.

    Два параметра, которые там важны:

    ПараметрЧто делает
    Устанавливать статус 404 Отдавать корректный код ответа при отсутствии страницы
    Показывать спец. страницу Использовать /404.php вместо системного сообщения

    404 внутри компонентов

    Отдельный случай: раздел существует, а конкретного элемента в нём нет. Например, товар удалили, а ссылка на него осталась в поиске.

    У компонентов вроде news.detail и catalog.element есть параметр SET_STATUS_404. Он должен быть включён — иначе при удалённом элементе компонент отдаст пустую страницу с кодом 200:

    <?$APPLICATION->IncludeComponent(
        'bitrix:news.detail',
        'main',
        [
            'IBLOCK_ID'      => 5,
            'SET_STATUS_404' => 'Y',
            'SHOW_404'       => 'Y',
            'MESSAGE_404'    => 'Материал не найден',
        ]
    )?>

    Это один из самых частых пропусков при разработке каталога: страница ошибки настроена, но карточки удалённых товаров продолжают отдавать 200 и висеть в индексе.

    Массовые 404 после переезда

    После смены структуры сайта или переноса на новый движок старые адреса перестают существовать. Здесь важно не путать два инструмента:

    СитуацияЧто делать
    Страница переехала на новый адрес 301 редирект на новый URL
    Товар снят с продажи, есть аналог 301 на аналог или на раздел
    Страница удалена навсегда, замены нет 404, и это правильно
    Раздел удалён целиком 301 на родительский раздел

    Массово редиректить все 404 на главную — плохая идея: поисковик расценит это как мягкую ошибку, а пользователь окажется не там, куда шёл. Как настраивать переадресацию, разобрано в статье Как настроить редиректы в Битрикс.

    Где искать битые ссылки

    Найти реальные 404 на работающем сайте можно несколькими способами:

    • Яндекс.Вебмастер и Google Search Console. Показывают адреса, которые поисковик пытался открыть и получил 404.
    • Логи веб-сервера. Фильтр по коду ответа даёт полную картину, включая переходы с внешних сайтов.
    • Обход сайта краулером. Находит битые ссылки внутри самого сайта — их правят, а не редиректят.

    Разделять эти источники важно: внутренняя битая ссылка — это ошибка вёрстки или контента, её надо исправить. Внешняя ссылка на удалённую страницу — кандидат на 301 редирект.

    Что должно быть на странице 404

    Хорошая страница ошибки возвращает посетителя в поток, а не оставляет в тупике:

    • понятное объяснение без технических терминов;
    • ссылка на главную;
    • поиск по сайту;
    • ссылки на основные разделы или популярные материалы;
    • для интернет-магазина — ссылка на каталог.

    Чего быть не должно: автоматического редиректа через несколько секунд. Пользователь не успевает понять, что произошло, а поисковик получает неоднозначный сигнал.

    Проверка

    1. Откройте заведомо несуществующий адрес — должна показаться ваша страница.
    2. Во вкладке «Сеть» убедитесь, что код ответа именно 404, а не 200.
    3. Проверьте несуществующий элемент каталога — не только произвольный URL.
    4. Убедитесь, что на странице 404 работают меню и поиск.
    5. Проверьте, что страница не отдаёт 404 при включённом композитном кеше.
    6. Посмотрите, закрыта ли страница от индексации.

    Частые ошибки

    • Страница есть, код 200. Самая распространённая и самая вредная для SEO ситуация.
    • Не включён SET_STATUS_404 в компонентах. Удалённые товары продолжают отвечать 200.
    • Редирект всех 404 на главную. Ухудшает и поведенческие факторы, и оценку сайта поисковиком.
    • Страница 404 в дизайне «сервер сломался». Посетитель решает, что сайт не работает, и уходит.
    • Никто не смотрит отчёты по 404. Битые внутренние ссылки живут годами.

    Итог

    Работающая обработка 404 в Битрикс — это три вещи одновременно: файл /404.php в дизайне сайта, явная отдача кода ответа через CHTTP::SetStatus с константой ERROR_404 и включённый параметр SET_STATUS_404 в компонентах детального просмотра.

    Проверять нужно не внешний вид страницы, а код ответа во вкладке «Сеть». Страница с надписью «не найдено» и кодом 200 — это не настроенная 404, а источник мусора в поисковом индексе.

    Нужна помощь с Битрикс?

    Исправим ошибку, доработаем сайт, ускорим Битрикс или поможем разобраться с проблемой.

    Услуги
    База знаний