С самого начала, Битрикс имел проблемы с СЕО оптимизацией. Со временем настройки продукта претерпели изменения и часто их достаточно, для того, чтобы грамотно провести оптимизацию. Но есть момент, который, все еще имеет проблему с оптимизацией. Если в каталоге всего 5 страниц товаров, а мы перешли на 10ю, то увидим первую страницу. Это в корне не верно и нужно проставить 404 ошибку для несуществующих страниц пагинации. Для этого нам нужно внести правки в двух файлах шаблона компонента, который выводит элементы. Первый файл: result_modifier.php - здесь мы выведем из кеширования некоторые параметры компонента, чтобы отдавались актуальные, а не кешированные. И второй файл, который не кешируется в шаблоне: component_epilog.php - в нем мы и будем делать проверки.
result_modifier.php
$arResult['NAV_NUM'] = $arResult['NAV_RESULT']->NavNum;
$arResult['NAV_NUMBER'] = $arResult['NAV_RESULT']->NavPageNomer;
if($arResult['NAV_NUM'] && $arResult['NAV_NUMBER']){
$cp = $this->__component; // объект компонента
$cp->SetResultCacheKeys(
array(
'NAV_NUM',
'NAV_NUMBER'
)
);
}
component_epilog.php
use Bitrix\Main\Application;
$arGetParams = Application::getInstance()->getContext()->getRequest()->getQueryList()->toArray();
if ($arGetParams["PAGEN_" . $arResult["NAV_NUM"]] > 0 && $arResult["NAV_NUMBER"] != $arGetParams["PAGEN_" . $arResult["NAV_NUM"]])
{
CHTTP::SetStatus("404 Not Found");
define('ERROR_404','Y');
Bitrix\Iblock\Component\Tools::process404(
'Не найден', //Сообщение
true, // Нужно ли определять 404-ю константу
true, // Устанавливать ли статус
true, // Показывать ли 404-ю страницу
false // Ссылка на отличную от стандартной 404-ю
);
}