[Решено] Ошибка с индексацией товара тегом rel="canonical"

  • 9 Ответов
  • 3045 Просмотров

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

*

Оффлайн Ravilka

Создал сайт на V2, сайт уже индексируется, но yandexe мне запретил нужные старницы:

Цитировать
Информация: страницы намеренно запрещены к индексированию или не должны индексироваться.   
Документ не является каноническим (В коде документа в тэге link содержится параметр rel="canonical", указывающий на другой (канонический) документ. Вместо данного документа проиндексирован канонический.) - 48


URL

/catalog/aksessuary/описание_заказа

22.04.2012   22.04.2012   
/catalog/aksessuary/ajur1.html - нужная страница товара

23.04.2012   23.04.2012   
/catalog/aksessuary/SEF_по,заказ

22.04.2012   22.04.2012   
/catalog/aksessuary/SEF_по,название_категории

23.04.2012   23.04.2012   
/catalog/aksessuary/SEF_по,название_производителя

22.04.2012   22.04.2012   
/catalog/bruki/описание_заказа

22.04.2012   22.04.2012   
/catalog/bruki/bruki-1.html - нужная страница товара

23.04.2012   23.04.2012   
/catalog/bruki/SEF_по,артикул

22.04.2012   22.04.2012   
/catalog/bruki/SEF_по,заказ

22.04.2012   22.04.2012   
/catalog/bruki/SEF_по,название_категории

23.04.2012   23.04.2012   
/catalog/bruki/SEF_по,название_производителя

22.04.2012   22.04.2012   
/catalog/classics/производитель/-2012-04-18-06-33-28_

23.04.2012   23.04.2012   
/catalog/classics/forreman-cl2.html - нужная страница товара

23.04.2012   23.04.2012   
/catalog/classics/marko-feretto-cl1.html - нужная страница товара

и тд

На каждой странице есть тэг rel="canonical" - который ненужные страницы исключает из поисковика, так вот он есть и в нужных страницах.
Если кто знает, помогите убрать с нужных страниц!

Все разобрался, проиндексировались неправильные ссылки. Добавил в путь id товара, посмотрим что будет.

Кстати нашел плагин для Virtuьфке 1.1.9 http://extensions.joomla.org/extensions/extension-specific/virtuemart-extensions/virtuemart-administration/16280, но он вставляет только в страницу товара, а в категории нет.
« Последнее редактирование: 12.08.2012, 01:48:02 от ELLE »

*

Оффлайн nadim

И как решился вопрос, что-то тут решения нет ?
У меня такая ситуация в каждой карточке товара присутствует rel="canonical" на эту же страницу - поэтому Яндекс неиндексирует - как избавиться от этого? Версия VirtueMart 2.0.10 (обновил до 2.0.14 тоже самое).

*

Оффлайн jouser

Сам ищу ответ, пока никак. Там вся фишка в том что в каноникал на страницах товара ссылка на эту же страницу. Получается бесконечный цикл. И вобще каноникал в VirtueMart это просто дебилизм. Есть категория, которая разбита на страницы по 10 товаров на каждой. Но если открыть вторую или третью страницу этой категории то каноникал будет указывать на первую, а ведь это абсолютно разные страницы! Кароч надо вырубать эту шнягу вобще, а все что нужно прописывать ручками.
« Последнее редактирование: 22.11.2012, 16:02:04 от jouser »

*

Оффлайн jouser

В общем кому надо отключить каноникал
на странице товара:
в файле \components\com_virtuemart\views\productdetails\view.html.php комментируем строки (где-то 202-ая)
if ($format == 'html') {
       // Set Canonic link
       $document->addHeadLink(JRoute::_($product->canonical, true, -1), 'canonical', 'rel', '');
   }
на странице категории:
\components\com_virtuemart\views\category\view.html.php (129-я строка) то же самое:
if ($format == 'html') {
         $document->addHeadLink( JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$categoryId), 'canonical', 'rel', '' );
      }

В общем кому надо отключить каноникал
на странице товара:
в файле \components\com_virtuemart\views\productdetails\view.html.php комментируем строки (где-то 202-ая)
if ($format == 'html') {
       // Set Canonic link
       $document->addHeadLink(JRoute::_($product->canonical, true, -1), 'canonical', 'rel', '');
   }
на странице категории:
\components\com_virtuemart\views\category\view.html.php (129-я строка) то же самое:
if ($format == 'html') {
         $document->addHeadLink( JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$categoryId), 'canonical', 'rel', '' );
      }
jouser, Искал решение этой проблемы около месяца, .... мучительно. 
Зарегистрировался только для того, чтобы поблагодарить Вас, очень помогла Ваша рекомендация. Удалил эти строки и теперь каноникал "отстал" ... Спасибо Вам большое.

*

Оффлайн ChaosHead

Улыбнуло) Почитайте что такое тег canonica. Все, с чем вы боритесь сделано правильно.

*

Оффлайн jouser

Улыбнуло) Почитайте что такое тег canonica. Все, с чем вы боритесь сделано правильно.
на странице товара - да, правильно, а на странице категрии нет - т.к. тег запрещает к индексации страницы пагинации, то есть из всех страниц категории индексироваться будет только первая. Чем это правильно?

*

Оффлайн SolopoV

  • *****
  • 474
  • [+]12 / [-]0
  • зеленею...
    • Просмотр профиля
Покурив мануалы про "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', '');
« Последнее редактирование: 03.02.2015, 02:05:42 от SolopoV »

*

Оффлайн SolopoV

  • *****
  • 474
  • [+]12 / [-]0
  • зеленею...
    • Просмотр профиля
Не знаю... Зря, теме поставлена админом метка "Решена".

Для карточки товара:

// Set Canonic link
$namedonen = 'http://ваш домен';
if($isCustomVariant !==false and !empty($isCustomVariant->usecanonical) and !empty($product->product_parent_id)){
$parent = $product_model ->getProduct($product->product_parent_id);
$document->addHeadLink($namedonen .  JRoute::_($parent->canonical), 'canonical', 'rel', '');
} else {
$document->addHeadLink($namedonen .  JRoute::_($product->canonical), 'canonical', 'rel', '');
}

Для категории:
//$link = 'index.php?option=com_virtuemart&view=category';
//if($categoryId!==-1){
// $link .= '&virtuemart_category_id='.$categoryId;
//}
//if($manId!==-1){
// $link .= '&virtuemart_manufacturer_id='.$manId;
//}
$namedonen = 'http://ваш домен';
//$domain  = $this->params->get('domain');

$link = 'index.php?option=com_virtuemart&view=category';
if(($categoryId!==-1)&&($categoryId!=0)){
$link .= '&virtuemart_category_id='.$categoryId;
}
if(($manId!==-1)&&($manId!=0)){
$link .= '&virtuemart_manufacturer_id='.$manId;
}


$document->addHeadLink($namedonen . JRoute::_($link, FALSE), 'canonical', 'rel', '' );


Может кто красивей вытащит название домена?

*

Оффлайн bgg87

Не знаю... Зря, теме поставлена админом метка "Решена".
---
Может кто красивей вытащит название домена?

+1

Тоже интересует данное решение!
А ещё было бы отлично если каноническая ссылка не ссылался на себя же.
Т.е. если зайти в любую категорию VirtueMart, например:
http://site.ru/cat
будет следующее:
<link href="/cat" rel="canonical" />
Бен, ай нид хелп!