Всем привет. Коллеги передомно стоит задача сделать редирект на канонический урл
Что имеем :
/catalog/cukaty/kumkvat/kumkvat-vyalenyy-laym/ сервер отвечает 200
/catalog/cukaty/kumkvat-vyalenyy-laym/ и эта страинца тоже отвечает 200 хотя стоит атрибут что эта главная /catalog/cukaty/kumkvat/kumkvat-vyalenyy-laym/
Нашел на просторах сети
Добавляем в result_modifier.php шаблона bitrix:catalog.element (Элемент каталога детально) следующий код:
$cp = $this->__component; // объект компонента if (is_object($cp)) { // добавим в arResult компонента поля $cp->arResult['RES_MOD']['CANONICAL_PAGE_URL'] = $arResult['CANONICAL_PAGE_URL']; $cp->arResult['RES_MOD']['SET_CANONICAL_URL'] = $arResult['ORIGINAL_PARAMETERS']['SET_CANONICAL_URL']; $cp->arResult['RES_MOD']['CURRENT_BASE_PAGE'] = $arResult['ORIGINAL_PARAMETERS']['CURRENT_BASE_PAGE']; $cp->SetResultCacheKeys(array('RES_MOD')); }
Добавляем там же в component_epilog.php
//определяем протокол define("SITE_SERVER_PROTOCOL", (CMain::IsHTTPS()) ? "https://" : "http://"); //создаем переменную со ссылкой на которой находится пользователь $thisUrl = SITE_SERVER_PROTOCOL . SITE_SERVER_NAME . $arResult['RES_MOD']['CURRENT_BASE_PAGE']; //проверяем стоит ли установка у компонента SET_CANONICAL_URL и не пустое ли значение у canonical if($arResult['RES_MOD']['SET_CANONICAL_URL'] == 'Y' && $arResult['RES_MOD']['CANONICAL_PAGE_URL'] != '') { //если ссылка не соответствует канонической if($arResult['RES_MOD']['CANONICAL_PAGE_URL'] != $thisUrl) { //делаем редирект LocalRedirect($arResult['RES_MOD']['CANONICAL_PAGE_URL']); } }
Может кто поправит синтаксис кода. Не могу проверит