@degty
BiathlonLife

Как сделать редирект на канонический URL для страницы товара в 1С-Битрикс?

Всем привет. Коллеги передомно стоит задача сделать редирект на канонический урл

Что имеем :
/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']); } }


Может кто поправит синтаксис кода. Не могу проверит
  • Вопрос задан
  • 510 просмотров
Решения вопроса 1
@degty Автор вопроса
BiathlonLife
Вообщем нашел решение. Необходимо прописать в файл element.php

"STRICT_SECTION_CHECK" => (isset($arParams["DETAIL_STRICT_SECTION_CHECK"]) ? $arParams["DETAIL_STRICT_SECTION_CHECK"] : ''),


путь к файлу domen.ru/bitrix/templates/ваша_тема/companents/bitrix/catalog/ваша_тема/element.php
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
megafax
@megafax
web-программист
Так у Вас тогда есть REQUEST_URI и CANONICAL_PAGE_URL. Сравните их и в случае отличия сделайте редирект в component_epilog
Ответ написан
а как можно получить CANONICAL_PAGE_URL?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы