1С-Битрикс: SEO для страниц пагинации

Как убрать дубли title и description на страницах пагинации 1С-Битрикс (PAGEN_1, PAGEN_2): обработчик OnEpilog в init.php, плюс canonical и правила для роботов.

Правки в .settings.php и init.php вносите через SSH или FTP и сделайте копию файла: ошибка в нём останавливает весь сайт, а через админку её не исправить.

Проблема

Списки в Битриксе листаются через параметр PAGEN_1 (/catalog/?PAGEN_1=2). У всех страниц списка одинаковые title и description, и поисковики считают их дублями. Есть два подхода: закрыть страницы пагинации от индексации или сделать их метатеги уникальными. Здесь — второй.

Обработчик в init.php

Добавьте в /local/php_interface/init.php:

use Bitrix\Main\EventManager;

EventManager::getInstance()->addEventHandler('main', 'OnEpilog', static function () {
    global $APPLICATION;
    foreach ($_GET as $key => $value) {
        if (preg_match('/^PAGEN_\d+$/', $key) && (int)$value > 1) {
            $page = (int)$value;
            $title = $APPLICATION->GetProperty('title') ?: $APPLICATION->GetTitle();
            $APPLICATION->SetPageProperty('title', $title . ' — страница ' . $page);
            $description = (string)$APPLICATION->GetProperty('description');
            if ($description !== '') {
                $APPLICATION->SetPageProperty('description', $description . ' Страница ' . $page . '.');
            }
            break;
        }
    }
});

Обработчик срабатывает для любого номера списка (PAGEN_1, PAGEN_2 …) и только со второй страницы. Первая страница остаётся без изменений.

Что ещё сделать

  • Не ставьте на страницы пагинации canonical на первую страницу — Google рекомендует, чтобы каждая страница списка была самостоятельной.
  • Яндексу можно подсказать игнорировать параметр через Clean-param: PAGEN_1 в robots.txt, если страницы пагинации не нужны в поиске.
  • Текст-описание раздела выводите только на первой странице, чтобы не размножать его по всем.

Все статьи

Расскажите о задаче — подберём платформу и оценим работу

Обсудить проект