Критичная ошибка «Найдены страницы-дубли с GET-параметрами» — Как избавиться?

«Яндекс Вебмастер» стал информировать вебмастеров о наличии на сайтах страниц-дублей с GET-параметрами, эта ошибка помечается как критическая. Можно увидеть сообщение в панели Яндекс Вебмастера: «Найдены страницы дубли с GET параметрами». В своем сообщении Яндекс информирует вебмастера о том, что на некоторых страницах сайта размещен одинаковый контент, различающийся только гет-параметрами.

GET-параметр — это параметр, который передается серверу в URL страницы. Самым частым примером URL с GET-параметром в интернет магазинах являются страницы пагинации, например, site/category?page=30. Эти параметры по типу «page=30» могут генерироваться самой системой управления контентом сайта (WordPress, Drupal, 1С-Битрикс), так и добавлением UTM-меток для рекламных кампаний.

GET-параметр начинается с вопросительного знака. Если URL содержит более одного параметра, то эти параметры разделяются знаком «&». Самый частый случай появления дублей из-за незначащих параметров — метки для задач веб-аналитики. Например, utm_source, utm_medium, from. Такими метками владельцы сайтов привыкли помечать трафик. Фактически эти URL одинаковые, на них опубликован одинаковый контент. Но формально адреса разные, так как различаются GET-параметрами в URL. Соответственно, и поиск тоже может посчитать их разными. Такие страницы и называются дублями с незначащими GET-параметрами.

Как оставить в поиске нужную страницу

1.    Добавьте в файл robots.txt директиву Clean-param, чтобы робот не учитывал незначащие GET-параметры в URL. Робот Яндекса, используя эту директиву, не будет много раз обходить повторяющийся контент. Значит, эффективность обхода повысится, а нагрузка на сайт снизится.

2.    Если вы не можете добавить директиву Clean-param, укажите канонический адрес страницы, который будет участвовать в поиске. Это не уменьшит нагрузку на сайт: роботу Яндекса всё равно придётся обойти страницу, чтобы узнать о rel=canonical. Поэтому мы рекомендуем использовать Сlean-param как основной способ.

3.   Если по каким-то причинам предыдущие пункты вам не подходят, закройте дубли от индексации при помощи директивы Disallow. Но в таком случае поиск Яндекса не будет получать никаких сигналов с запрещенных страниц. Поэтому мы рекомендуем использовать Сlean-param как основной способ.

Директива Clean-param — межсекционная, это означает, что она будет обрабатываться в любом месте файла robots.txt. Указывать ее  для роботов Яндекса при помощи User-Agent: Yandex не требуется. Но если вы хотите указать директивы именно для наших роботов, убедитесь, что для User-Agent: Yandex указаны и все остальные директивы — Disallow и Allow. Если в robots.txt будет указана директива User-Agent: Yandex, наш робот будет следовать указаниям только для этой директивы, а User-Agent: * будет проигнорирован.

Как использовать Clean-param

Для понимания того, как используется Clean-param, стоит привести простой пример. Существуют дубли страницы со следующими гет-параметрами:

www.devguide.ru/posst/posst.php?sort=price
www.devguide.ru/posst/posst.php?sort=order
www.devguide.ru/posst/posst.php?sort=name

Чтобы в результатах поиска учитывалась только основная страница www.devguide.ru/posst/posst.php, нужно задать правило Clean-param в файле robots.txt:

User-agent: Yandex
Clean-param: price&order&
sort /posst/posst.php

price&order&sort – это динамические параметры, не требующие учета.

Чтобы директива применялась к параметрам на страницах по любому адресу, не указывайте адрес:

User-agent: Yandex
Clean-param: utm

Использование Disallow вместо Clean-param в robots.txt

Можно вместо Clean-param использовать директиву Disallow. Возьмем для примера, адрес, который мы использовали выше:

www.devguide.ru/posst/posst.php?nov=11117777&V=77777&g=6666

Тогда прописываем следующее:

  • Disallow: *?nov=
  • Disallow: *&V=
  • Disallow: *&g=

Мы закрываем от индексации все страницы, содержащие своём адресе эти динамические параметры. Но можно в этом случае сделать проще и прописать всего одну строчку: Disallow: *?.

Дополнительные примеры

#для адресов вида:
www.example1.com/forum/showthread.php?s=681498b9648949605&t=8243
www.example1.com/forum/showthread.php?s=1e71c4427317a117a&t=8243

#robots.txt будет содержать:
User-agent: Yandex
Clean-param: s /forum/showthread.php
#для адресов  вида:
www.example2.com/index.php?page=1&sid=2564126ebdec301c607e5df
www.example2.com/index.php?page=1&sid=974017dcd170d6c4a5d76ae

#robots.txt будет содержать:
User-agent: Yandex
Clean-param: sid /index.php
#если таких параметров несколько:
www.example1.com/forum_old/showthread.php?s=681498605&t=8243&ref=1311
www.example1.com/forum_new/showthread.php?s=1e71c417a&t=8243&ref=9896

#robots.txt будет содержать:
User-agent: Yandex
Clean-param: s&ref /forum*/showthread.php
#если параметр используется в нескольких скриптах:
www.example1.com/forum/showthread.php?s=681498b9648949605&t=8243
www.example1.com/forum/index.php?s=1e71c4427317a117a&t=8243

#robots.txt будет содержать:
User-agent: Yandex
Clean-param: s /forum/index.php
Clean-param: s /forum/showthread.php

Disallow и Clean-param

Директива Clean-param не требует обязательного сочетания с директивой Disallow.

User-agent: Yandex
Disallow:
Clean-param: s&ref /forum*/showthread.php

#идентично:
User-agent: Yandex
Clean-param: s&ref /forum*/showthread.php

Так как директива Clean-param межсекционная, ее можно указывать в любом месте файла, вне зависимости от расположения директив Disallow и Allow. Исполнение Disallow при этом имеет приоритет и, если адрес страницы запрещен к индексированию в Disallow и одновременно ограничен в Clean-param, страница проиндексирована не будет.

User-agent: Yandex
Disallow:/forum
Clean-param: s&ref /forum*/showthread.php

В этом случае страница https://example.com/forum?ref=page будет считаться запрещенной. Не указывайте директиву Disallow для страниц, если хотите только удалить из поиска варианты ссылок с GET-параметрами.

Оставьте первый комментарий

Отправить ответ

Ваш e-mail не будет опубликован.


*


19 + десять =