Как убрать дубли страниц сайта на 1С-Битрикс
- Подробности
- Категория: Bitrix
- Просмотров: 16123
Сегодня мы поговорим о такой важной тем, как ДУБЛИ СТРАНИЦ в bitrix - они могут достать, так как страницы сайта появляются под разными адресами, а если вы еще и продвигаете интернет-магазин, то это еще и снижение продаж...так как страницы - детальные описания товара особо выходить не будут в ТОП поисковиков...разбираемся...
В сети много чего написано по поводу того как избавиться от дублей в bitrix - но все очень не ясно и размывчато - давайте вносить ясность.
Как убрать дубли страниц сайта на 1С-Битрикс - мы будем на живом примере, где я и убирал эти дубли.
Есть две страницы одинаковые совершенно:
- http://vdmim.ru/catalog/detskoepitanie/pyure_sami_s_usami_myasnoe_s_ovoshchami_100_gr_kuritsa_s_tsvetnoy_kapustoy_s_6_mes_/
- http://vdmim.ru/catalog/pure/pyure_sami_s_usami_myasnoe_s_ovoshchami_100_gr_indeyka_s_brokkoli_i_risom_s_6_mes_
То есть это одна и та же страница-товара, который находится в разных категориях и поэтому ссылки отличаются, что для поисковиков то является дублями страниц и плохо влияет на ранжирование данного товара в поисковике. Вообще по-хорошему, разбираться с "архитектурой" скажем так, то есть о том как правильно должна выглядеть ссылка на сайте - надо разбираться в самом начале создания сайта, то есть на этапе проекта. Но так как у нас уже сайт проиндексировался поисковиками и менять ссылки мы не хотим, то есть некоторые советуют заменить категорию на "element", то таким образом все страницы просто слетят в ПС - а я бы этого не хотел. Да и Яндекс советует применять rel="canonical"(истинная страница - товара допустим) с таких случаях, вот его ты мы давайте и установим:
1) Первым делом находим файл result_modifier.php (он лежит обычно в папке с шаблоном и там внутри найдете папку catalog.element и в ней еще папку default вот в ней):
// add for canonical
$arElement = CIblockElement::GetById($arResult["ID"])->GetNext();
$arResult['DETAIL_PAGE_URL'] = $arElement['DETAIL_PAGE_URL'];
$cp = $this->__component;
if (is_object($cp))
$cp->SetResultCacheKeys(array('DETAIL_PAGE_URL'));
2) Теперь в той же папке есть файл - component_epilog.php - в нем вставляем следующее:
global $APPLICATION // добавить только, если этого нет
// add for canonical
$APPLICATION->AddHeadString('<link href="//'.SITE_SERVER_NAME.$arResult['DETAIL_PAGE_URL'].'" rel="canonical" />',true);
Или так:
global $APPLICATION // добавить только, если этого нет
// add for canonical
$APPLICATION->AddHeadString('<link href="http://'.SITE_SERVER_NAME.$arResult['DETAIL_PAGE_URL'].'" rel="canonical" />',true);
Тут используется, конкретно http://, а в варианте выше универсально и для https также. Выбирать вам.
Кстати, все эти файлы должны начинаться с этого:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
Для тех, кто не разбирается в php - в этих файлах вы вставляете файл в конец, но перед таким символом ?>, иначе у вас ничего не заработает.
* Так...если это касается категорий, то все тоже самое, только меняем на это $arSection['SECTION_PAGE_URL']
Идем в catalog.section в result_modifier.php (но почему-то у меня это не сработало! - кто найдет ошибку напишите пожалуйста в комментах)
вставляем это:
$arSection = CIblockSection::GetById($arResult["ID"])->GetNext();
$arResult['SECTION_PAGE_URL'] = $arSection['SECTION_PAGE_URL'];
$cp = $this->__component;
if (is_object($cp))
$cp->SetResultCacheKeys(array('SECTION_PAGE_URL'));
а в в component_epilog.php вставляем это:
$APPLICATION->AddHeadString('<link href="http://'.SITE_SERVER_NAME.$arResult['SECTION_PAGE_URL'].'" rel="canonical" />',true);
! Самый рабочий метод - и самый простой! Вставляем нижеприведенный код в header.php - и ничего все, что выше было понаписано не надо даже (по идее этот вариант самый лучший оказался, и мороки меньше, только 404 страницы - для них он тоже выставляет, не особо знаю как это исключить, скоро разберусь):
<?
$APPLICATION->AddHeadString('<link rel="canonical" href="http://site.ru' . str_replace('index.php', '', $APPLICATION->GetCurPage(true)) . '" />');
?>
Вопросы будут обращайтесь...в комменты ниже
Комментарии
Попробовал Ваш способ (последний). Подскажите, правильно ли то, что на страницах товаров одинаковых выводится канонический url этой же страницы, я имею в виду, что на странице
domain.com/category-1/product-1
выводится
,
на странице domain.com/category-2/product-1 выводится
?
По идее во второй категории (/category-2/) должен выводится
, указывая, что это первоисточник.
допустим, для урла с адресом:
каталог/производитель/наименование
будет канонические ссылка ="каталог/производитель/наименование"
а для
каталог/страна/наименование
будет канонические ссылка ="каталог/страна/наименование"
Так и какой смысл от таких канонов?
Ведь они должны все дубли указывать на одну страницу, а по факту этого не происходит.
RSS лента комментариев этой записи