Пример: если на странице https://site.ru/category/podushki/?page=2 стоит тег <link rel="canonical" href="https://site.ru/category/podushki/"/>, то робот поисковой системы при посещении страницы "понимает", что вебмастер сайта хочет, чтобы в поиске ранжировалась именно страница https://site.ru/category/podushki/.
Примечательно, что, несмотря на то что данный код официально является для поисковых систем нестрогим тегом (всего лишь рекомендацией) поисковые системы обычно этой рекомендации всегда следовали, до тех пор пока Yandex 4 июля 2019 года не объявил, что отныне будет индексировать и ранжировать неканонические страницы, потому что ... потому что просто так хочет. Для сайтов это изменение в худшую сторону - появилась куча проблем в виде проиндексированного хлама и размывания ссылочного и поведенческого веса по страницам. Проблема эта решается закрытием ненужных страниц другими способами: в файле robots.txt или строгим метатегом "robots" (для проставноки метатега "robots" на Webasyst Shop Script я разработал плагин SEO Meta Robots).
Сам же "Link Canonical" из тега, который раньше закрывал страницы от индексирования, превратился в тег, который служит для передачи веса с неканонических страниц на канонические в тех случаях, когда использование 301 редиректа неуместно. Подробно на этом я сейчас останавливаться не буду. Если вам интересна тема настройки правильной индексации интернет-магазина на Shop Script - читайте отдельную статью. Спойлер: для корректной индексации и ранжирования сайта нужно внедрять все три способа "закрытия" страниц: и файл "robots.txt" и метатег "robots" и "link canonical".
Проблема с "Link Canonical" на Webasyst Shop Script 8
Вернемся в древние времена, когда трава была зеленее, небо голубее, а агрегаторы еще не успели захватить E-commerce.
1. Webasyst выпустил тему дизайна Default и в одном из обновлений (или в разных обновлениях, не суть) в тему дизайна было выведено два фрагмента кода, заслуживающие сейчас особого внимания:
{if !empty($canonical)}{/if} {$wa->head()}
Код, расположенный выше, выводил "link canonical" средствами темы дизайна. Код ниже - выводил код содержимое поля "Пользовательский JavaScript-код внутри <head>". Чуть позже нижний код ниже также стал выводить метатеги Open Graph (что это такое читайте в документации Yandex), но сейчас не об этом. Идем дальше.
2. Разработчики тем дизайна при создании своих продуктов подсмотрели как это реализовал Webasyst и на протяжении долгих лет делали в своих темах тоже самое.
В большинстве тем дизайна, опубликованных в маркете Webasyst, есть и тот и другой код. Причем в новых темах дизайна (которые разрабатываются, например, прямо сейчас) старый код тоже будет внедряться в тему для совместимости со старыми версиями Shop Script. Такую информацию предоставили сами разработчики тем дизайна.
3. Webasyst выпустил обновление приложения Shop Scrit 8.13.0.37 и в нем есть важное изменение:
{$wa->head()} теперь также выводит "Link Canonical"
И в чем проблема?
Проблема в том, что если вы обновили Shop Script 8 до последней версии, то у вас с большой долей вероятности в исходном коде "Link Canonical" выводится дважды. Сразу после обновления приложения, на форуме Webasyst посыпались куча гневных комментариев на этот счет. Посмотреть темы на форуме, в которых освещается проблема, можно по ссылке.
Больше всего информации представлено на этой странице. Здесь же, в этой теме, представитель Webasyst озвучил свою позицию на этот счет:
Как решить проблему дублирования "Link Canonical"?
Способ 1: доработать тему дизайна самостоятельно, устранив дублирование тега в шаблоне темы дизайна. При этом, разумеется, теряется возможность обновления темы дизайна через инсталлер (либо не обновляйтесь, либо обновляйтесь, но переносите доработку самостоятельно). Готовые варианты доработок можно подсмотреть на форуме.
Способ 2: сообщить о проблеме разработчику темы дизайна и попросить доработать тему дизайна таким образом, чтобы тег не выводился дважды. Возможно, разработчик пойдет навстречу и вставит какой-нибудь костыль (например, в шаблоне темы сделает проверку на версию приложения Shop Script и будет выводить разный код, в зависимости от полученной версии).
Способ 3: установить мой плагин SEO Link Canonical. В нем я нашел довольно изящное решение проблемы: устранил вывод "Link Canonical" обоими перечисленными выше способами и настроил вывод тега иным способом: через хук темы дизайна. Преимуществом данного решения является отсутствие необходимости вносить какие-либо правки в темы дизайна. Кроме того, плагин имеет довольно гибкий функционал для проставноки тега, в зависимости от типа страницы и в зависимости от User-Agent-а. Например, в плагине есть возможность выводить разные теги для Yandex и для Google. Опытные SEO-специалисты оценят =) С документацией к плагину можно ознакомиться здесь.