Бортовой журнал Ктулху

Избавление от дублей страниц с помощью canonical url в Битриксе

Битрикс любит плодить дубли товаров если они находятся в разных категориях. Стандартных средств борьбы с этим недостатком нет, но я покажу простой способ как с помощью тега rel="canonical" победить проблему дублей.

В шаблоне карточки товара (в дефолтном шаблоне лежит примерно тут: /bitrix/components/bitrix/catalog.element/templates/.default/template.php).

В самом верху добавляем:

----- CODE -----

$url_in_product = $arResult["PROPERTIES"]["CANONICAL"]["VALUE"];
$url_product_str = 'http://'.$_SERVER['SERVER_NAME'].$arResult["PROPERTIES"]["CANONICAL"]["VALUE"];
$current_url = $APPLICATION->GetCurPage();

if($url_in_product == $current_url)
{
$APPLICATION->AddHeadString('<link rel="canonical" href="http://bitrix-help.ru/index.php">');
}

----- /CODE -----

В инфоблоке каталога товаров добавляем свойство Канонический URL CANONICAL.

bitrix

В админке товара появляется свойство

битрикс

В это поле можно заносить URL страницы товара, которая будет считаться основной. На этой странице в хедере будет выводиться тег canonical.

Мой способ похож на описанный здесь и даже немного скопирован, но реализован все же более просто.

$url_in_product = $arResult["PROPERTIES"]["CANONICAL"]["VALUE"];
$url_product_str = '.$arResult["PROPERTIES"]["CANONICAL"]["VALUE"];
$current_url = $APPLICATION->GetCurPage();

if($url_in_product == $current_url)
{
$APPLICATION->AddHeadString('<link rel="canonical" href="/index.php">');
}