Закрытие дублей VirtueMart 2 методом rel="canonical"

  • 2 Ответов
  • 115 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Strikerus

  • ***
  • 85
  • + 5 -
  • Aka Smyke
Доброго времени суток, господа!
Хотел бы поделиться с вами еще одним способом решения проблемы с дублями страниц в поиске. Данный метод является альтернативой закрытию дублей через robots.txt и его можно применить в том случае, если дублирующие страницы уже попали в поиск и никак не желают из поиска уходить.

Сайт, на котором проводились действия, старичок на Joomla 2.5 и Virtuemart 2 с включенным ЧПУ

Примеры URL страниц-дублей:
https://tx22.ru/компрессорное-оборудование/компрессорные-головки/by,product_name/dirDesc
https://tx22.ru/компрессорное-оборудование/results,33-32
https://tx22.ru/вибраторы/by,product_price/results,16-15
https://tx22.ru/бетоносмесители/dirDesc
https://tx22.ru/manufacturer/huter/results,46-45

Здесь мы видим стандартные проблемы - дублирование пагинацией, сортировкой, еще не понятно чем и производителем (производителей тоже считаю дублем в моем случае, т.к. на сайте функционал группировки товаров по производителю не нужен)

Т.к. закрытие дублей запретом на индексирование в файле robots.txt помогло только для Яндекса, отдельно для Google было решено объявить на таких страницах rel="canonical"

Для этого в файл index.php перед закрывающим тегом </head> вставляем следующий код:

Код: php
<?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
<?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="/компрессорное-оборудование/компрессорные-головки/" />

Надеюсь мой скромный кусок кода поможет в оптимизации вашего сайта  ^-^

*

Strikerus

  • ***
  • 85
  • + 5 -
  • Aka Smyke
Ошибся разделом. Прошу модераторов перенести тему в раздел "Обсуждение вопросов оптимизации сайтов на CMS Joomla! для продвижения в поисковых системах.(SEO)"

*

fsv

  • *****
  • 2502
  • + 366 -
А если бы у вас 30 полей сортировки было? "Этажерка" из if?
Ловите virtuemart_category_id и стройте SEF-ссылку, или на категорию, или на Главную, или куда-вам-надо.

Цитировать
Прошу модераторов перенести тему в раздел "Обсуждение вопросов оптимизации сайтов на CMS Joomla! для продвижения в поисковых системах.(SEO)"
В Joomla это решение куда вставить? К тому же вы описали ваш частный случай.
Спасибо, что поделились, но на всякий случай уточню для "новичков": это не рецепт для бездумного копипаста, а направление мысли.

И в тройке есть canonical, в двойке уже не помню, к тому же вы версию не указали.
Заказать разработку:    расширения Joomla  |   интерфейсы на javascript(jQuery)  |  мобильные приложения