Тема: Тег rel canonical

Как создать тег <link rel="canonical" href="http://site.ru/osnovnoj-url"; /> для первой страницы категории товара? он должен ОБЯЗАТЕЛЬНО быть в секции <head>, иначе  данная инструкция будет проигнорирована поисковыми системами. Где можно прописать теги, и как проверить URL на то что это первая страница? Проблема существует уже давно. Закрытие от индексирования по маске в robots.txt не дает желаемого эффекта. Яндекс не индексирует нужные страницы из-за дублей.

по сути необходимо реализовать следующий алгоритм

Если (ЕстьПагинация()=Истина & ЭтоПерваяСтраницаКатегорииКаталогаТоваровСПагинацией()=Истина)
ВывестиВШаблонеСтраницы("<link rel="canonical" href="ТекушийУРЛ"; />")
КонецЕсли

На примере вашего демо сайта

http://mega.readyscript.ru/catalog/elektronika/ - первая страница

http://mega.readyscript.ru/catalog/elektronika/ <http://mega.readyscript.ru/catalog/elektronika/?p=2>; ?p=2 - вторая страница

ну и так далее 3 4 5 6 ….. естественно на них не должно быть тега.... мы же указываем роботу что страница категории основная/посадочная c помощью такой конструкции и дубли пропадут, и мы сможем конкретную страницу отслеживать и продвигать.



из за проблем с индексированием – просто выпадают страницы конкретные нужно прописать тег каноникал на первую страницу всех категорий

Повысить оценку +1 Понизить оценку

2 Отредактировано Закусило Александр (25.08.2017 11:49:21)

Re: Тег rel canonical

Ну лично у себя я это сделал так:

{$cat_url={urlmake p=null}} {*очищает от постраничности*}
{$cat_url=str_replace(urlencode("][0]"), urlencode("][]"), $cat_url)}{*заменяем для фильтров на правиольный url*}
{$cat_url="https://ВАШДОМЕН$cat_url"} {* Готовим сам адрес *}
{$app->setAnyHeadData("<link rel='canonical' href='$cat_url'/>")|devnull} {* Вставляем в секцию head произвольный код. В данном случае в rel="canonical" *}

И вставил в нужное место своей темы в list_products.tpl. В моём случае в list_products.my.tpl

3

Re: Тег rel canonical

Спасибо, вроде заработало...

Повысить оценку Понизить оценку

4

Re: Тег rel canonical

Закусило Александр пишет:

Ну лично у себя я это сделал так:

{$cat_url={urlmake p=null}} {*очищает от постраничности*}
{$cat_url=str_replace(urlencode("][0]"), urlencode("][]"), $cat_url)}{*заменяем для фильтров на правиольный url*}
{$cat_url="https://ВАШДОМЕН$cat_url"} {* Готовим сам адрес *}
{$app->setAnyHeadData("<link rel='canonical' href='$cat_url'/>")|devnull} {* Вставляем в секцию head произвольный код. В данном случае в rel="canonical" *}

И вставил в нужное место своей темы в list_products.tpl. В моём случае в list_products.my.tpl

Подскажите в какое место правильно вставить  в  list_products.tpl ?

Повысить оценку Понизить оценку

5

Re: Тег rel canonical

https://marketplace.readyscript.ru/addons/seoaddon/

6 Отредактировано Александр Б (30.01.2020 17:36:21)

Re: Тег rel canonical

Для вывода на всех страницах просто вставьте в layout.tpl в корне темы после {strip} этот код:

{$canonical_url={urlmake p=null}}
{$canonical_url=str_replace(urlencode("][0]"), urlencode("][]"), $canonical_url)}
{$domain=$smarty.server.HTTP_HOST}
{$protocol=$smarty.server.HTTP_X_FORWARDED_PROTO}
{$canonical_url="$protocol://$domain$canonical_url"}
{$app->setAnyHeadData("<link rel='canonical' href='$canonical_url'/>")|devnull}

Повысить оценку +1 Понизить оценку

Re: Тег rel canonical

Закусило Александр пишет:

Ну лично у себя я это сделал так:

{$cat_url={urlmake p=null}} {*очищает от постраничности*}
{$cat_url=str_replace(urlencode("][0]"), urlencode("][]"), $cat_url)}{*заменяем для фильтров на правиольный url*}
{$cat_url="https://ВАШДОМЕН$cat_url"} {* Готовим сам адрес *}
{$app->setAnyHeadData("<link rel='canonical' href='$cat_url'/>")|devnull} {* Вставляем в секцию head произвольный код. В данном случае в rel="canonical" *}

И вставил в нужное место своей темы в list_products.tpl. В моём случае в list_products.my.tpl

Подскажите, в какое именно место в list_products.tp вставлять код от постраничности?

Повысить оценку Понизить оценку

8

Re: Тег rel canonical

Евгений пишет:

Подскажите, в какое именно место в list_products.tp вставлять код от постраничности?

Можно в начале этого файла.

Повысить оценку Понизить оценку

9 Отредактировано Сергей (12.08.2020 15:36:51)

Re: Тег rel canonical

метод работает, подтверждаю

{$cat_url={urlmake p=null}} {*очищает от постраничности*}
{$cat_url=str_replace(urlencode("][0]"), urlencode("][]"), $cat_url)}{*заменяем для фильтров на правиольный url*}
{$cat_url="https://ВАШДОМЕН$cat_url"} {* Готовим сам адрес *}
{$app->setAnyHeadData("<link rel='canonical' href='$cat_url'/>")|devnull} {* Вставляем в секцию head произвольный код. В данном случае в rel="canonical" *}


установка
1. заходим в админке Вебсайт - Настройка сайта ( смотрим там какая у вас тема уставновлена в поле тема например flatlines(blue)"
2. заходим Управление - Шаблоны - сверху выбираем вашу тему что посмотрели в пункте 1
3 переходим в корне к файлу в  layout.tpl нажимаем на файл для редактирования и вставляем копи-паст в самое начало после строчки <strip> файла код выше исправляя параметры "https://ВАШДОМЕН" на свои например "https://multizoo.ru"

Повысить оценку Понизить оценку

Re: Тег rel canonical

Сергей пишет:

метод работает, подтверждаю

{$cat_url={urlmake p=null}} {*очищает от постраничности*}
{$cat_url=str_replace(urlencode("][0]"), urlencode("][]"), $cat_url)}{*заменяем для фильтров на правиольный url*}
{$cat_url="https://ВАШДОМЕН$cat_url"} {* Готовим сам адрес *}
{$app->setAnyHeadData("<link rel='canonical' href='$cat_url'/>")|devnull} {* Вставляем в секцию head произвольный код. В данном случае в rel="canonical" *}


установка
1. заходим в админке Вебсайт - Настройка сайта ( смотрим там какая у вас тема уставновлена в поле тема например flatlines(blue)"
2. заходим Управление - Шаблоны - сверху выбираем вашу тему что посмотрели в пункте 1
3 переходим в корне к файлу в  layout.tpl нажимаем на файл для редактирования и вставляем копи-паст в самое начало после строчки <strip> файла код выше исправляя параметры "https://ВАШДОМЕН" на свои например "https://multizoo.ru"


У вас на сайте не работает, у меня тоже не получилось настроить ни один вариант.
Возможно вы это просто написали чтобы свой сайт обозначить. ... не суть.

Второй момент вшивать  домен в шаблон не совсем верно.  Если мультисайтовый рэдискрипт то как быть?

Повысить оценку Понизить оценку

Re: Тег rel canonical

Рабочий вариант вот этот.

Для вывода на всех страницах просто вставьте в layout.tpl в корне темы после {strip} этот код:
{$canonical_url={urlmake p=null}}
{$canonical_url=str_replace(urlencode("][0]"), urlencode("][]"), $canonical_url)}
{$domain=$smarty.server.HTTP_HOST}
{$protocol=$smarty.server.HTTP_X_FORWARDED_PROTO}
{$canonical_url="$protocol://$domain$canonical_url"}
{$app->setAnyHeadData("<link rel='canonical' href='$canonical_url'/>")|devnull}

Только обязательно после модификации чистим КЭШ в настройках системы, иначе эффекта не будет.  Всем спасибо!

Повысить оценку Понизить оценку

12

Re: Тег rel canonical

Если позволите, выскажу свое мнение.
Люблю иногда почитать оригинальное описание того, для чего разрабатывался тег rel="canonical" в RFC 6596.

https://tools.ietf.org/html/rfc6596

to specify the single-page version as preferred over the same content separated on multiple component pages.

--------------

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

--------------

Различные страницы пагинации - это не дублирующийся контент, если у вас нет общей страницы (на каждой странице - разные товары). Указывая ссылку на первую страницу - вы просто отрезаете  от индексирования все остальные страницы каталога, кроме первой и все. SEOшники обычно ставят галочку - rel=canonical применили, задача закрыта, но это ведь не так!

В RFC прямо сказано про пагинацию, то о чем я пишу выше:

*  As an example, each component page (e.g., page-1.html, page-
         2.html) of a multi-page article MAY specify the "view-all"
         version (e.g., page-all.html), the superset of their content,
         as the target IRI.  This is because the content from each
         component page is contained within the view-all version.  Given
         this implementation, applications can mark page-1.html and
         page-2.html as duplicates of page-all.html, process content
         only from page-all.html, and disregard the component pages.
         All references can then be made to the view-all version (page-
         all.html, the target IRI), and no content will have been lost
         in this process.

      *  Using the same example above, page-2.html SHOULD NOT designate
         page-1.html as the target (canonical) IRI because this may
         cause a loss of data.  When page-2.html designates page-1.html
         as the canonical, only content from the target IRI, page-
         1.html, will be processed. page-2.html may be marked as a
         duplicate of page-1.html and its content disregarded.

Просто жалко ваши сайты, когда что-то делается на них без понимания того, для чего в деталях это делается.

Повысить оценку +2 Понизить оценку

13 Отредактировано Александр (03.09.2020 08:41:10)

Re: Тег rel canonical

Приведенный код прсто копирует адрес обращения к станице внутрь тега

В моем случае так
<link rel='canonical' href='https://сайт.ru/product/motornoe-maslo-mobil-super-3000-x1-5w-40-4-l-1l/?_openstat=абракатабра'/>

а нужно чтобы при любом обращении было так
<link rel='canonical' href='https://сайт.ru/product/motornoe-maslo-mobil-super-3000-x1-5w-40-4-l-1l-41690/>

В общем приведенный код не решает задачу прописки канонических страниц для всех уникальных страниц сайта.
Какие еще есть инструменты? Нужно отсечь все дубли которые так или иначе попали в индекс.

https://marketplace.readyscript.ru/addons/seoaddon/  -  вот эта штука есть но она обделена документацией.
Кто нибудь пользовался?

Повысить оценку Понизить оценку

Re: Тег rel canonical

... и тишина, только мертвые  с косами стоят.

Повысить оценку +1 Понизить оценку

15

Re: Тег rel canonical

Александр пишет:

Приведенный код прсто копирует адрес обращения к станице внутрь тега

В моем случае так
<link rel='canonical' href='https://сайт.ru/product/motornoe-maslo-mobil-super-3000-x1-5w-40-4-l-1l/?_openstat=абракатабра'/>

а нужно чтобы при любом обращении было так
<link rel='canonical' href='https://сайт.ru/product/motornoe-maslo-mobil-super-3000-x1-5w-40-4-l-1l-41690/>

В общем приведенный код не решает задачу прописки канонических страниц для всех уникальных страниц сайта.
Какие еще есть инструменты? Нужно отсечь все дубли которые так или иначе попали в индекс.


Попробуйте использовать следующую конструкцию

https://{$smarty.server.HTTP_HOST}{strtok($smarty.server.REQUEST_URI,'?')}

Повысить оценку Понизить оценку