Доброго времени суток, господа!
Хотел бы поделиться с вами еще одним способом решения проблемы с дублями страниц в поиске. Данный метод является альтернативой закрытию дублей через robots.txt и его можно применить в том случае, если дублирующие страницы уже попали в поиск и никак не желают из поиска уходить.
Сайт, на котором проводились действия, старичок на
Joomla 2.5 и
Virtuemart 2 с включенным ЧПУ
Примеры URL страниц-дублей:
https://tx22.ru/компрессорное-оборудование/компрессорные-головки/by,product_name/dirDeschttps://tx22.ru/компрессорное-оборудование/results,33-32https://tx22.ru/вибраторы/by,product_price/results,16-15https://tx22.ru/бетоносмесители/dirDeschttps://tx22.ru/manufacturer/huter/results,46-45Здесь мы видим стандартные проблемы - дублирование пагинацией, сортировкой, еще не понятно чем и производителем (производителей тоже считаю дублем в моем случае, т.к. на сайте функционал группировки товаров по производителю не нужен)
Т.к. закрытие дублей запретом на индексирование в файле robots.txt помогло только для Яндекса, отдельно для Google было решено объявить на таких страницах
rel="canonical"Для этого в файл index.php перед закрывающим тегом </head> вставляем следующий код:
<?php
$urlstr = ($_SERVER['REQUEST_URI']);
$strings = strpos($urlstr, 'manufacturer');
if ($strings > 0) {
$urlstr = substr($urlstr, 0, $strings);
$reltrue = 1;
}
$strings = strpos($urlstr, 'results');
if ($strings > 0) {
$urlstr = substr($urlstr, 0, $strings);
$reltrue = 1;
}
$strings = strpos($urlstr, 'by,product');
if ($strings > 0) {
$urlstr = substr($urlstr, 0, $strings);
$reltrue = 1;
}
$strings = strpos($urlstr, 'dirDesc');
if ($strings > 0) {
$urlstr = substr($urlstr, 0, $strings);
$reltrue = 1;
}
if ($reltrue == 1) { ?>
<link rel="canonical" href="<?php echo "$urlstr" ?>" />
<?php } ?>
Внимание! Если на вашем сайте используется разбивка товаров по производителям и вам НЕ нужно удалять из индексирования связанные с производителем страницы - то воспользуйтесь кодом ниже:
<?php
$urlstr = ($_SERVER['REQUEST_URI']);
$strings = strpos($urlstr, 'results');
if ($strings > 0) {
$urlstr = substr($urlstr, 0, $strings);
$reltrue = 1;
}
$strings = strpos($urlstr, 'by,product');
if ($strings > 0) {
$urlstr = substr($urlstr, 0, $strings);
$reltrue = 1;
}
$strings = strpos($urlstr, 'dirDesc');
if ($strings > 0) {
$urlstr = substr($urlstr, 0, $strings);
$reltrue = 1;
}
if ($reltrue == 1) { ?>
<link rel="canonical" href="<?php echo "$urlstr" ?>" />
<?php } ?>
В результате, после вставки кода в head, на перечисленных в начале поста страницах появляется тег rel="canonical", указывающий на основную страницу раздела.
Например на странице
https://tx22.ru/компрессорное-оборудование/results,33-32 будет тег
<link rel="canonical" href="/компрессорное-оборудование/" />
а на странице
https://tx22.ru/компрессорное-оборудование/компрессорные-головки/by,product_name/dirDesc будет тег
<link rel="canonical" href="/компрессорное-оборудование/компрессорные-головки/" />
Надеюсь мой скромный кусок кода поможет в оптимизации вашего сайта