Покурив мануалы про "canonical", прихожу к выводу, что данное решение не совсем верно. За основу взято:
https://support.google.com/webmasters/answer/139066?rd=1Имеем: Joomla 3.3.6 + Virt 3.0.2
При добавлении одного товара в родительскую и дочернюю категории получаем:
Товар в дочерней категории:
<base href="http://www.mysite.ru/shop/girl/windbreaker/vetrovochnaya-kurtka-neisse-1-detail.html" />
<meta name="title" content="Ветровочная куртка" />
<title>Ветровки : Ветровочная куртка </title>
<link href="http://www.mysite.ru/shop/girl/windbreaker/vetrovochnaya-kurtka-neisse-1-detail.html?limit=int" rel="canonical" />
<link href="/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" rel="canonical" />
В родительской категори этот же товар:
<base href="http://www.mysite.ru/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" />
<meta name="title" content="Ветровочная куртка" />
<title>Ветровки : Ветровочная куртка</title>
<link href="http://www.mysite.ru/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html?limit=int" rel="canonical" />
<link href="/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" rel="canonical" />
Насколько я понял,
?limit=int" rel="canonical", рождается в Joomla. И он нам нафиг не нужен.
Убираем его в файле плагина (sef.php):
//$doc->addHeadLink(htmlspecialchars($link), 'canonical');
Теперь получаем нормальный rel="canonical", указывающий на основную страницу:
<link href="/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" rel="canonical" />
Вот код одного товара в двух категориях:
<base href="http://www.mysite.ru/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" />
<meta name="title" content="Ветровочная куртка" />
<title>Ветровки : Ветровочная куртка</title>
<link href="/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" rel="canonical" />
<base href="http://www.mysite.ru/shop/girl/windbreaker/vetrovochnaya-kurtka-neisse-1-detail.html" />
<meta name="title" content="Ветровочная куртка" />
<title>Ветровки : Ветровочная куртка</title>
<link href="/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" rel="canonical" />
Но по совету Google важно использовать абсолютные, а не относительные пути.
Формирование кода происходит в указанном файле: \components\com_virtuemart\views\productdetails\view.html.php
Если кто то поможет сделать абсолютный путь - буду крайне признателен.
$document->addHeadLink($product->canonical, 'canonical', 'rel', '');