Проблема с "Link Canonical" на Webasyst Shop Script 8 (и ее решение)

3 ноября 2020 (65 просмотров)

Для начала, пару слов об этом чудо-теге. "Link Canonical" - это тег "link" двумя атрибутами: "rel" и "href". В значении атрибута "rel" указывается "Canonical", а в значении атрибута "href" указывается страница, рекомендуемая поисковым системам в качестве канонической (той, которая должна индексироваться и ранжироваться).

Пример: если на странице 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)}<link rel="canonical" href="{$canonical}"/>{/if}
  • {$wa->head()}

Код, расположенный выше, выводил "link canonical" средствами темы дизайна. Код ниже - выводил код содержимое поля "Пользовательский JavaScript-код внутри <head>". Чуть позже нижний код ниже также стал выводить метатеги Open Graph (что это такое читайте в документации Yandex), но сейчас не об этом. Идем дальше.

2. Разработчики тем дизайна при создании своих продуктов подсмотрели как это реализовал Webasyst и на протяжении долгих лет делали в своих темах тоже самое.

В большинстве тем дизайна, опубликованных в маркете Webasyst, есть и тот и другой код. Причем в новых темах дизайна (которые разрабатываются, например, прямо сейчас) старый код тоже будет внедряться в тему для совместимости со старыми версиями Shop Script. Такую информацию предоставили сами разработчики тем дизайна.

3. Webasyst выпустил обновление приложения Shop Scrit 8.13.0.37 и в нем есть важное изменение:

  • теперь также выводит "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-специалисты оценят =) С документацией к плагину можно ознакомиться здесь.