Дубли страниц: как найти, чем закрыть и когда canonical не поможет
Дубли — это страницы одного сайта с одинаковым содержимым по разным адресам. Поисковик объединяет их в группу и сам выбирает, какую показывать, поэтому из выдачи может пропасть нужная. Закрываются они четырьмя способами: 301-редиректом, каноническим адресом, директивой Clean-param в Яндексе и запретом индексирования.
Ниже — где дубли видно, чем закрывать какой тип, в каких случаях Яндекс игнорирует указание канонического адреса и почему у Google это вообще рекомендация, а не команда.
Чем дубли на самом деле вредят
Три последствия, и они разной тяжести.
Из поиска пропадает не та страница. Робот объединяет дубли в группу и выбирает для показа одну. Его выбор может не совпасть с вашим: в выдаче останется версия с параметром или страница печати вместо нормальной.
Адрес в выдаче меняется сам. Это объясняет историю, которую в чате рассказывают регулярно: «страница была в топе, потом стала другой, мы ничего не делали».
Сайт обходится медленнее. Робот тратит обход на одинаковые адреса, и важные страницы попадают в индекс позже. На большом сайте это ощутимо.
Чего в списке нет: отдельного наказания за дубли. Это не санкция, а потеря управления — поисковик принимает решение за вас.
Откуда они берутся
Типичные источники, от самых частых:
- Слеш и его отсутствие:
/catalogи/catalog/. - www и без www,
httpиhttps. - Главная в нескольких видах:
/,/index.php,/index.html,/main. - GET-параметры: метки рекламных кампаний, сортировки, идентификаторы сессий. Самый массовый источник на живых сайтах.
- Фильтры каталога: каждое сочетание параметров порождает адрес.
- Пагинация и страницы «показать всё».
- Один товар в нескольких категориях — адрес отличается путём, содержимое то же.
- Версии для печати и быстрые мобильные версии.
- Технические копии: тестовый поддомен, который забыли закрыть, или старый сайт, оставшийся на поддомене.
- Региональные версии с одинаковым содержимым — отдельная история со своими правилами.
Важная оговорка Яндекса: дублями признаются страницы в рамках одного сайта. Одинаковый текст на другом домене — это уже не дубли, а другой разговор.
Где их увидеть
Яндекс Вебмастер. Раздел «Индексирование → Страницы в поиске», блок «Исключённые страницы», фильтр по статусу «Удалено: Дубль». Отдельно: если дубли появились из-за GET-параметров, Яндекс присылает уведомление на странице «Диагностика сайта».
Google Search Console. Отчёт об индексировании, причины вида «Страница является копией. Canonical не выбран пользователем» и «Google выбрал другую каноническую страницу, чем пользователь». Вторая формулировка — самая полезная: она прямо говорит, что ваше указание получено и отклонено.
Любой краулер сайта. Обход покажет одинаковые title и description — это самый быстрый способ найти смысловые дубли, которые панели не считают техническими.
Поиск по сайту. Оператор site: с кусочком заголовка в кавычках — грубо, но за минуту показывает, сколько версий страницы в индексе.
Чем закрывать какой тип
| Случай | Чем закрывать |
|---|---|
| Слеш, www, http, index.php | 301-редирект на один выбранный вид |
| Старый адрес после переезда | 301-редирект |
| UTM-метки и идентификаторы сессий | Clean-param в Яндексе, canonical для Google |
| Сортировки и способы отображения | canonical на базовую страницу |
| Товар в нескольких категориях | canonical на основной адрес товара |
| Пагинация | Ничего: страницы разные, canonical на первую не ставить |
| Версия для печати | noindex |
| Фильтры каталога | Решение по каждому типу: нужные — уникализировать, остальные закрыть |
| Тестовый поддомен | Пароль, а не robots.txt |
Два правила, которые экономят больше всего времени. Первое: 301 надёжнее canonical — редирект исполняется, канонический адрес только учитывается. Второе: для нормализации не используют robots.txt. Google прямо пишет: «Не используйте для нормализации файл robots.txt». Закрытая от обхода страница не исчезает из индекса — она становится страницей, о которой поисковик ничего не знает, но которую видел в ссылках.
Когда canonical не сработает
У Яндекса перечислены случаи, в которых указание игнорируется:
- Содержимое канонической страницы значительно отличается от содержимого неканонической.
- Канонический адрес недоступен роботу или ведёт на редирект.
- Указан адрес в другом домене или поддомене.
- Указано несколько канонических адресов.
- Указана цепочка: страница A ссылается на B, а B — на C.
Проверить, что указание принято, можно там же: неканоническая страница должна появиться в блоке «Исключённые страницы» в Вебмастере.
У Google статус указания мягче по определению. В документации сказано, что это рекомендация, а не директива: если вы не укажете канонический адрес, Google выберет его сам, а если укажете неудачно — может выбрать иначе. При этом он учитывает несколько сигналов сразу: редиректы, rel="canonical" в коде и в HTTP-заголовке, карту сайта, внутренние ссылки, аннотации hreflang и предпочтение https.
Отсюда практический вывод, который чаще всего и решает проблему: внутренние ссылки должны вести на канонический адрес. Если по всему сайту вы ссылаетесь на версию с параметром, а в canonical указываете чистую, вы отправляете противоречивые сигналы и проигрываете сами себе.
Clean-param: чем он лучше запрета
Директива Clean-param в robots.txt говорит роботу Яндекса, что параметр не меняет содержимое, и адреса с ним и без него — одна страница. В отличие от запрета, страница не выпадает из обхода, а сигналы сходятся на одном адресе.
Clean-param: utm_source&utm_medium&utm_campaign
Clean-param: sort&order /catalog/
Первая строка снимает рекламные метки по всему сайту, вторая — сортировки только в каталоге. Для Google этой директивы нет, там ту же задачу решают каноническим адресом.
Частый случай: это не дубли
Половина «дублей» в каталогах — не дубли, а тонкие страницы. Фильтр «красные кроссовки 42 размера» формально уникален: товары на нём другие. Проблема в том, что кроме списка товаров там нет ничего, и таких страниц тысячи.
Решение здесь не техническое. Часть сочетаний, по которым есть спрос, превращают в полноценные посадочные: свой заголовок, описание, ответ на вопрос покупателя. Остальные закрывают от индексирования. Разбирать это по каждому фильтру скучно, но именно в этом работа, а не в расстановке canonical по всему каталогу разом.
И обратная ошибка: массово закрыть все фильтры и потерять трафик по запросам, по которым люди ищут именно так.
Порядок работы
- Выбрать главное зеркало и вид адреса: со слешем или без, с www или без, и поставить 301 на всё остальное.
- Посмотреть в Вебмастере исключённые страницы со статусом «Дубль», в Search Console — отчёт об индексировании.
- Разобрать параметры: какие меняют содержимое, какие нет. Для вторых —
Clean-paramв Яндексе и canonical для Google. - Проставить canonical там, где содержимое действительно совпадает, и проверить, что он не ведёт в цепочку и не на редирект.
- Привести внутренние ссылки к каноническим адресам.
- Пройтись по фильтрам каталога и решить по каждому типу: уникализировать или закрыть.
- Через две-три недели вернуться в панели и посмотреть, что изменилось.
Если по ходу выясняется, что проще поменять структуру адресов целиком, — это уже переезд, и делается он по отдельным правилам, с картой соответствия и постраничными редиректами.
Частые вопросы
Наказывают ли за дубли?
Нет, отдельной санкции за дубли не существует. Последствия другие: поисковик сам выбирает, какую страницу из группы показывать, адрес в выдаче может смениться без вашего участия, а обход сайта замедляется, потому что робот тратит его на одинаковые адреса.
Чем 301-редирект лучше canonical?
Тем, что он исполняется, а канонический адрес только учитывается. Яндекс перечисляет пять случаев, когда указание игнорируется, а Google прямо называет его рекомендацией, а не директивой. Если старая страница не нужна людям — ставьте 301. Canonical нужен там, где обе версии должны оставаться доступными: сортировки, метки, товар в нескольких категориях.
Можно ли закрыть дубли в robots.txt?
Для нормализации — нет, и Google пишет это прямым текстом. Запрет обхода не убирает страницу из индекса и лишает поисковик возможности увидеть canonical или редирект на ней. Запрет уместен для служебных разделов, а не для выбора главной версии страницы.
Что такое Clean-param и когда он нужен?
Это директива в robots.txt для робота Яндекса: она говорит, что указанный GET-параметр не меняет содержимое страницы. Адреса с параметром и без склеиваются, страница остаётся в обходе. Нужна в первую очередь для рекламных меток, сортировок и идентификаторов сессий. У Google такой директивы нет — там то же решается каноническим адресом.
Нужен ли canonical на страницах пагинации?
Ставить canonical со второй и дальнейших страниц на первую не нужно: это разные страницы с разным содержимым, и такое указание либо проигнорируют, либо вы спрячете из индекса товары, которые есть только на второй странице. Каждая страница пагинации канонична сама себе.
Google пишет, что выбрал другую каноническую страницу. Что делать?
Это самое полезное сообщение в отчёте: оно значит, что указание получено и отклонено. Проверьте три вещи — действительно ли содержимое страниц совпадает, не ведут ли внутренние ссылки на неканоническую версию, нет ли противоречия с картой сайта и редиректами. Google сопоставляет все эти сигналы, и побеждает их совокупность, а не тег.
Товар лежит в трёх категориях и доступен по трём адресам. Как правильно?
Выбрать один основной адрес товара и ссылаться на него отовсюду, а на остальных вариантах поставить canonical на основной. Лучше вообще не плодить адреса: сделать товар доступным по одному пути независимо от того, из какой категории на него пришли.
Поддомен с копией сайта — это дубли?
Формально нет: Яндекс признаёт дублями страницы в рамках одного сайта, а поддомен считается отдельным. Но вреда это не отменяет: две версии конкурируют между собой. Тестовые копии закрываются паролем, а не файлом robots.txt — иначе они попадают в индекс по внешним ссылкам.
Одинаковые title у разных страниц — это дубль?
Технически нет, но это первый признак, что страницы не различаются по смыслу. Так чаще всего выглядят карточки, собранные по одному шаблону, и фильтры каталога. Чинится не каноническим адресом, а переписыванием заголовков и описаний под то, чем страницы на самом деле отличаются.
Сколько ждать после того, как всё закрыли?
Робот должен переобойти страницы, а это недели, а не дни: на небольшом сайте две-три, на крупном дольше. Ускорить можно отправкой адресов на переобход в Вебмастере и Search Console. Главное — не менять решение каждую неделю: частые правки канонических адресов и редиректов удлиняют процесс.
Спросите в чате сообщества
Самое интересное всплывает в обсуждении: в чате отвечают практикующие специалисты, те, кто занимается продвижением каждый день. Приносите свои случаи и спорьте — вступление бесплатное, в том числе для заказчиков.