Ответить Новая тема Новый опрос 
 canonical - канонические урл
GrandLunge
Новичок
Сообщений: 5
Регистрация: 28-01-2012


22-08-2016 04:11
Здравствуйте! хочу поднять один вопрос на обсуждение касательно формирования канонического адреса для карточки товара, при этом карточка товара доступна сразу по нескольким адресам.

Часто встречается примерно следующее решение проблемы:
{if $page_name == 'index' or $page_name == 'search'}
<link rel="canonical" href="{$base_dir}" />
{elseif $page_name == 'category' or $page_name == 'best-sales' or $page_name == 'cart' or $page_name == 'discount' or $page_name == 'manufacturer' or $page_name == 'new-products' or $page_name == 'prices-drop'}
<link rel="canonical" href="{$base_dir}{$request_uri|substr:1|regex_replace:'/\/(.*)/':''|regex_replace:'/\?(.*)/':''}" />
{else}
<link rel="canonical" href="{$base_dir}{$request_uri|substr:1}" />
{/if}

или вот такой вариант:

{if $page_name == 'product' && isset($product->id)}
<link rel="canonical" href="{$link->getProductLink($product->id)}" />
{elseif $page_name == 'manufacturer' && isset($manufacturer->id)}
<link rel="canonical" href="{$link->getManufacturerLink($manufacturer->id)}" />
{elseif $page_name == 'supplier' && isset($supplier->id)}
<link rel="canonical" href="{$link->getSupplierLink($supplier->id)}" />
{elseif $page_name == 'category' && isset($category->id)}
<link rel="canonical" href="{$link->getCategoryLink($category->id)}" />
{elseif in_array($page_name,$pages_array)}
<link rel="canonical" href="{$link->getPageLink($page_name)}" />
{elseif $page_name == 'cms' && isset($cms->id)}
<link rel="canonical" href="{$link->getCmsLink($cms->id)}" />
{else}
{assign var=amn value=explode("-",$page_name)}
{if strpos($page_name,"module-") !== false && count($amn) == 3}
<link rel="canonical" href="{rtrim($base_dir,'/')}{$request_uri|regex_replace:'/\?(.*)/':''|replace:'index.html':''}" />
{/if}
{/if}

однако при указанном выше условии (когда карточка товара доступна по нескольким адресам) такое решение работает не верно.

к примеру карточка товара доступна по адресам:
http://site.ru/piony/756-buket-binelli.htm
http://site.ru/756-buket-binelli.html

и при таких решениях канонический адрес для страницы
http://site.ru/piony/756-buket-binelli.htm
будет
<link rel="canonical" href="http://site.ru/piony/756-buket-binelli.html" />

а для страницы http://site.ru/756-buket-binelli.html
будет
<link rel="canonical" href="http://site.ru/756-buket-binelli.html" />

что не решает первоначальную задачу для определения канонической страницы.
Соответственно необходим код, который будет в данном случае принудительно указывать единственный канонический адрес (либо через категорию, либо прямой на карточку товара).

Есть кто решил подобную проблему?
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
GrandLunge
Новичок
Сообщений: 5
Регистрация: 28-01-2012


24-08-2016 16:03
неужели ни кто не сталкивался с этим? ни кто не знает как это исправить?
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
AK-74
Cпециалист
Сообщений: 115
Регистрация: 01-02-2016


29-08-2016 00:36
Так canonical указывает поисковику на базовую страницу для индексации, но эта страница доступна по нескольким УРЛам. Собственно canonical и нужен чтобы поисковик не путался при индексации и не дублировал обработку одного и того же контента. Ошибкой было бы, если бы одна и та же страница при заходе по разным урлам имела разные значения canonical.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос