
Дубли страниц на сайте — проблема, которую владелец не видит в браузере и узнаёт о ней последним: сайт открывается, страницы на месте, а в выдаче вместо карточки услуги показывается её копия с «?utm_source» в адресе. У обычного магазина на WordPress в отчёте Вебмастера адресов со статусом «дубль» бывает больше, чем страниц, участвующих в поиске. Ниже — откуда дубли берутся, как найти их без платных сервисов и чем убирать каждый тип, чтобы вместе с мусором не выкинуть из поиска нужные страницы.
Что поиск считает дублем
Формулировка Яндекса простая: если страницы сайта доступны по разным адресам, но имеют одинаковое содержимое, робот может посчитать их дублями. Ключевых слов здесь два — «разные адреса» и «одинаковое содержимое». Робот не сравнивает страницы побуквенно и не требует стопроцентного совпадения: карточка товара и та же карточка с параметром сортировки в адресе для него одна и та же страница.
Дальше происходит то, что и создаёт проблему. Из группы одинаковых адресов поиск выбирает один, который считает основным, и показывает в выдаче именно его. Выбор делает алгоритм, а не вы: в результатах может оказаться адрес с «?replytocom=412», страница фильтра вместо категории или версия для печати. Остальные адреса уходят в исключённые со статусом «дубль».
Второй эффект — распыление. Ссылки, которые могли бы работать на одну страницу, распределяются между её копиями, а робот тратит время обхода на адреса, которые никому не нужны. На маленьком сайте это почти незаметно, на каталоге из нескольких тысяч карточек — очень даже.
Откуда берутся дубли: полный список источников
За двадцать лет работы с чужими сайтами я не видел ни одного источника, которого не было бы в этом перечне. Проверяйте по пунктам.
Технические варианты адреса. Один документ открывается с www и без, по http и по https, со слешем на конце и без него, с /index.php и без. Каждая комбинация — отдельный адрес для робота. Классика: сайт переехал на защищённый протокол, а старые адреса продолжают отдавать код 200 вместо перенаправления.
GET-параметры. Метки рекламных кампаний, идентификаторы сессий, сортировки, переключатели вида списка, параметры партнёрских программ. Адрес меняется, содержимое остаётся тем же. Яндекс прямо пишет, что из-за GET-параметров страницы с одинаковым содержимым открываются по разным URL — с параметрами и без, — и поиск может признать их дублями.
Пагинация и фильтры каталога. Вторая, третья, десятая страница списка часто наследуют текст и заголовок первой. Фильтры в интернет-магазине генерируют адреса комбинациями: цвет плюс размер плюс цена — и так сотнями. Отдельный разбор того, как поиск обходит такие каталоги, есть в материале про страницы пагинации без специальных атрибутов.
WordPress по умолчанию. Архивы по тегам, по датам, по авторам, ленты фидов, вложения как отдельные страницы, ветки комментариев с параметром replytocom. Свежеустановленный движок сам плодит по несколько адресов на каждую запись.
Ручные копии. Страница услуги для Москвы и точно такая же для области, где изменено одно слово. Формально разные адреса, для алгоритма — одно и то же. Сюда же версии для печати: отдельный адрес, тот же текст.
Как найти дубли: три способа без платных сервисов
Начинать нужно с данных самого поиска, а не с краулера. Краулер покажет, что есть на сайте; Вебмастер покажет, что из этого поиск уже счёл копией.
Способ первый — отчёт о страницах в поиске. В Вебмастере есть раздел «Индексирование» и в нём «Страницы в поиске» с представлением исключённых адресов. Там же фильтр по статусу: выбираете «дубль» — получаете список адресов, которые поиск объединил с другими. Данные выгружаются в таблицу, и это самый честный источник: вы видите не гипотезу, а решение алгоритма.
Способ второй — уведомления о GET-параметрах. Если на сайте много адресов с незначащими параметрами, сервис сообщает об этом отдельно. Что означает такое уведомление и как на него реагировать, разобрано в статье про найденные страницы-дубли с GET-параметрами.
Способ третий — оператор поиска. Наберите в Яндексе site:вашсайт.ру и добавьте кусок текста в кавычках — первое предложение описания услуги. Если фраза находится по нескольким адресам, это кандидаты в дубли. Оператор url: проверяет конкретный адрес или группу: url:вашсайт.ру/catalog/*. Оговорка: site: даёт ориентировочную выборку и не показывает точное число страниц в индексе, так что используйте его для примеров, а не для подсчёта.
Ручная проверка технических вариантов занимает пять минут. Откройте по очереди адрес с www, без www, по http, со слешем и без, с /index.php. Каждый вариант, который отдаёт код 200 и показывает содержимое вместо перенаправления, — готовый дубль.
Дубль главной страницы: отдельный случай
Главная собирает больше всего внешних ссылок, и дубли у неё встречаются чаще всего: логотип в шапке ссылается на «/», меню — на полный адрес с доменом, пагинация блога — на «/page/1/», старый баннер — на «/index.php».
Порядок разбора такой. Сначала определяетесь, какой адрес основной: с www или без, обязательно с https. Затем проверяете, что все остальные варианты отдают постоянное перенаправление на выбранный, а не открываются сами по себе. Отдельно проверьте «/page/1/» у блога и «/index.php». И последнее: ссылки в шапке, подвале и меню должны вести на основной адрес напрямую, без промежуточных шагов.
Частая ошибка на WordPress — атрибут canonical на главной, указывающий на адрес с www, при том что сайт давно работает без www. Один символ в теге заставляет поиск выбирать не ту страницу; я разбирал этот механизм в материале про то, как одна лишняя буква в canonical убирает страницу из выдачи.
Чем убирать: четыре инструмента и границы их применения
Справка Яндекса по дублированию страниц называет три основных способа указать роботу нужную страницу: постоянное перенаправление с кодом 301, атрибут rel=»canonical» и директива Clean-param в robots.txt. Четвёртый инструмент — настройки самого движка. Запрет в robots.txt в этот список не входит, и это принципиально.
301 — когда старого адреса быть не должно. Страница переехала, раздел переименован, вариант с www больше не нужен. Перенаправление передаёт накопленный вес и убирает адрес из обращения полностью. Не применяйте 301 там, где обе страницы должны оставаться доступными посетителю: например, страницу фильтра каталога нельзя перенаправлять на категорию — человек, нажавший фильтр, окажется не там, где хотел.
Canonical — когда обе страницы нужны людям. Карточка товара, доступная из двух категорий; страница с параметром сортировки; вариант для печати. Посетитель видит обе, а поиску вы говорите, какая основная. Тег работает как рекомендация, а не приказ: робот может её не учесть, если содержимое страниц сильно различается. Проверять корректность canonical нужно отдельно — как именно, описано в разборе про канонические адреса, которые работают против вас.
Clean-param — когда дело в параметрах адреса. Это директива именно для робота Яндекса. Синтаксис: Clean-param: p0[&p1&p2&..&pn] [путь]. Первое поле — параметры, которые нужно игнорировать, второе — префикс пути, где правило действует. Длина одного правила ограничена 500 символами, регистр учитывается, директива работает независимо от секции robots.txt и не требует пары с Disallow. Рабочий пример для меток и сортировок:
User-agent: Yandex
Clean-param: utm_source&utm_medium&utm_campaign&utm_term&utm_content
Clean-param: sort&order /catalog/
Принципиальное отличие от запрета: Clean-param склеивает показатели адресов с параметрами и без, а Disallow просто отрезает роботу доступ, и накопленное теряется. Разницу между тремя инструментами с примерами я разбирал в отдельной статье — Clean-param, canonical и 301: что куда ставить.
Настройки движка — когда дубли создаёт сам сайт. Отключение архивов по датам и авторам, отключение страниц вложений, отключение древовидных комментариев или хотя бы параметра в их адресах, единый формат постоянных ссылок. Для магазинов на WooCommerce отдельная история с фильтрами и сортировками — как их закрывать, не потеряв трафик, описано в материале про фильтры и сортировки, которые плодят дубли.
⚠️ Перед любой правкой robots.txt, .htaccess или файлов темы сохраните копию файла на компьютер. Ошибка в одной строке robots.txt способна убрать из поиска весь сайт, и обнаруживается это обычно через две-три недели, когда страницы уже выпали.
Таблица: тип дубля, чем убрать, чем нельзя
| Тип дубля | Чем убирать | Чем нельзя и почему |
|---|---|---|
| www и без www, http и https | Постоянное перенаправление 301 на выбранный основной адрес | Canonical — вариант останется доступен и будет обходиться роботом |
| Слеш на конце, /index.php | 301 на единый формат адреса | Запрет в robots.txt — адрес останется в обращении, ссылки повиснут |
| Метки кампаний в адресе | Clean-param в robots.txt, дополнительно canonical на чистый адрес | Disallow — потеряете склейку показателей адреса с меткой и без |
| Сортировки и переключатели вида | Clean-param с указанием раздела каталога | 301 — посетитель не сможет отсортировать список |
| Фильтры каталога с одинаковым содержимым | Canonical на категорию, нужные комбинации оставить открытыми | Массовый 301 на категорию — фильтр перестанет работать для людей |
| Пагинация с повтором текста первой страницы | Убрать повторяющийся текст со второй страницы и дальше, уникальный title | Полный запрет пагинации — робот перестанет доходить до глубоких карточек |
| Архивы по датам и авторам на WordPress | Отключить в настройках темы или плагина | Запрет в robots.txt как единственная мера — страницы уже в индексе |
| Ветки комментариев с параметром | Отключить древовидные комментарии либо Clean-param на параметр | Canonical без отключения — робот продолжит обходить тысячи адресов |
| Версия для печати | Canonical на основную страницу | 301 — кнопка печати перестанет работать |
| Две похожие страницы услуг, сделанные вручную | Оставить одну, со второй 301; либо переписать вторую под другой спрос | Canonical между коммерческими страницами — обе перестанут продвигаться самостоятельно |
Порядок работ, при котором позиции не проседают
Главное правило: не трогать всё сразу. Ниже порядок, который я использую на чужих сайтах и который позволяет откатиться на любом шаге.
| Шаг | Что делаете | Как проверить результат |
|---|---|---|
| 1 | Выгружаете исключённые адреса со статусом «дубль» в таблицу | В выгрузке видно, какой адрес поиск считает основным |
| 2 | Сортируете список по фрагментам адреса: utm_, ?sort, /tag/, /page/, replytocom | Каждая группа — одна причина, а не сотня отдельных проблем |
| 3 | Отмечаете адреса, которые приносили переходы из поиска | Отчёт Метрики по страницам входа за последние полгода |
| 4 | Чините технические варианты адреса: протокол, www, слеш | Проверка кода ответа: должен быть 301, а не 200 |
| 5 | Добавляете Clean-param для меток и сортировок | Инструмент анализа robots.txt в Вебмастере не показывает ошибок |
| 6 | Правите canonical там, где он указывает не туда | В коде страницы один тег canonical с абсолютным адресом |
| 7 | Отключаете лишние типы архивов в движке | Адреса архивов отдают 404 или перенаправляют |
| 8 | Правите внутренние ссылки на новые адреса | В коде шапки, меню и подвала нет ссылок на старые варианты |
| 9 | Отправляете изменившиеся страницы на переобход | Статус задания в Вебмастере меняется на выполненный |
| 10 | Через три недели сверяете отчёт заново | Число адресов со статусом «дубль» уменьшилось |
Про сроки: справка Яндекса говорит, что изменения, связанные с дублированием, обрабатываются в течение примерно трёх недель. Раньше этого срока выводы делать бессмысленно — вы просто увидите промежуточное состояние базы.
Пять ошибок, которые превращают чистку в потерю трафика
Закрыть дубли в robots.txt и считать вопрос решённым. Запрет обхода не убирает страницу из поиска сам по себе и не передаёт её показатели основному адресу. Получается худший вариант: адрес в выдаче остался, робот его больше не видит, исправить содержимое не может.
Поставить canonical между двумя коммерческими страницами. Если у вас страница «ремонт квартир» и страница «ремонт квартир под ключ», и вы соединили их каноническим тегом, вторая перестанет ранжироваться самостоятельно. Иногда это нужно, но решение принимается по спросу, а не из соображения «они похожи».
Перенаправить все дубли на главную. Поиск расценивает массовое перенаправление на главную как ошибку, а посетитель, кликнувший по ссылке из выдачи, не находит того, что искал. Об этом есть отдельный разбор — почему редирект на главную вместо 404 портит весь сайт.
Забыть про внутренние ссылки. Вы поставили перенаправления, но меню и кнопки по-прежнему ведут на старые адреса. Формально всё работает, фактически каждый переход посетителя и робота идёт через лишний шаг, а цепочки перенаправлений съедают вес страницы.
Когда это не сработает и когда нужен специалист
Чистка дублей помогает не всегда. Если страница не растёт потому, что на неё нет спроса или содержимое слабее, чем у конкурентов в выдаче, устранение копий ничего не изменит — поиск просто перестанет выбирать между вариантами одной и той же неинтересной страницы.
Своими силами не стоит браться за три случая. Первый — сайт на конструкторе или самописном движке, где нет доступа к robots.txt и коду шаблона. Второй — магазин, где фильтры дают десятки тысяч адресов: там решают, какие комбинации должны быть в поиске как посадочные страницы, а это работа с коммерческой логикой, а не с тегами. Третий — сайт, где дубли появились после переезда: сначала заканчивают переезд, потом чистят.
Частые вопросы
Сколько дублей — это много?
Смотреть надо не на абсолютное число, а на соотношение. Если в поиске участвует 300 страниц, а исключено со статусом «дубль» 40 — это рабочая ситуация, чаще всего метки и сортировки. Если участвует 300, а исключено 4 000 — робот тратит на ваш сайт время впустую, и до новых страниц он доходит в последнюю очередь.
Дубли — это фильтр или санкция?
Нет. Статус «дубль» в отчёте об исключённых страницах означает решение алгоритма о том, какой адрес из группы показывать. Это не нарушение и не наказание, записей об этом в разделе безопасности не появляется.
Надо ли закрывать страницы пагинации целиком?
Нет. Через пагинацию робот добирается до глубоких карточек каталога. Правильнее убрать со второй и последующих страниц повторяющийся текст и сделать уникальные заголовки, чем закрывать их от обхода.
После чистки трафик упал. Что проверять первым?
Коды ответа страниц, которые приносили переходы. В девяти случаях из десяти под общее правило попала нужная страница: она отдаёт 301 туда, куда не должна, или закрыта директивой, написанной слишком широко.
Коротко
Дубль — это один и тот же документ, доступный по нескольким адресам. Поиск сам выбирает из группы основной адрес, и без ваших указаний выбор может оказаться неудачным: в выдачу попадёт страница с меткой или версия для печати.
Искать надо в отчёте об исключённых страницах в Вебмастере, фильтруя по статусу «дубль», а не в платных сервисах. Это данные самого поиска, а не чья-то гипотеза, и они выгружаются в таблицу.
Инструментов четыре: 301 — когда старого адреса быть не должно; canonical — когда обе страницы нужны посетителю; Clean-param — когда дело в параметрах адреса; настройки движка — когда копии создаёт сам сайт. Запрет в robots.txt не решает задачу, а прячет её.
Порядок важнее скорости. Сначала выгрузка и группировка, потом технические варианты адреса, потом параметры, потом canonical, в конце — внутренние ссылки и переобход. Результат смотрят через три недели.
Чистка дублей не заменяет работу над содержимым. Она убирает шум, из-за которого поиск не может понять, какую страницу показывать, но спрос на страницу не создаёт.
И последнее, ради чего вообще имеет смысл этим заниматься. Реклама даёт трафик ровно до момента, пока вы платите за клики: остановили кампанию — переходы закончились в тот же день. Позиции в поиске работают иначе: страница, которую алгоритм выбрал и показывает, приносит обращения без ежедневного бюджета, и этот канал остаётся вашим активом вместе с сайтом. Техническая чистка — та часть работы, которая стоит дёшево и делается один раз, а отдачу даёт всё время, пока сайт живёт. Если хотите разобраться, что именно у вас мешает поиску выбирать нужные страницы, посмотрите SEO-продвижение и техническая чистка сайта или начните с бесплатного аудита сайта. Если нужен разбор конкретной ситуации с вашими адресами и отчётами — приходите на консультацию: посмотрим выгрузку вместе и составим порядок правок, при котором позиции не пострадают.
Проверить формулировки можно в первоисточниках: справка Яндекса о дублировании страниц и описание директивы Clean-param.
Увеличьте позиции и продажи вашего сайта
Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:
Остались вопросы по продвижению?
Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.
Связаться со мной →
Комментарии
Наталья
Выгрузила исключённые — 2 300 адресов со статусом «дубль», и почти все с replytocom. Сайт на WordPress, блогу семь лет, комментариев много. Отключать древовидные комментарии жалко, читатели ими пользуются. Есть вариант без отключения?
Анатолий Кузнецов автор
Есть, и он рабочий. Добавьте в robots.txt строку Clean-param на этот параметр — адреса с ним склеятся с чистыми, а ветки комментариев останутся на месте для людей. Вторая часть решения на стороне темы: ссылка «Ответить» у многих шаблонов ведёт на адрес с параметром даже при включённом JavaScript, и робот её видит. Посмотрите исходный код записи с комментариями и найдите, как оформлена эта ссылка. Если она обычная, попросите того, кто правит тему, отдавать её через скрипт. После этого 2 300 адресов схлопнутся сами, но не за неделю — считайте три недели минимум.
Олег
Спасибо за таблицу с «чем нельзя». Забрал себе целиком. Один момент всё же не понял: почему нельзя ставить 301 со страницы фильтра на категорию, если фильтр всё равно мусорный?
Анатолий Кузнецов автор
Потому что перенаправление работает для всех, а не только для робота. Человек заходит в каталог, отмечает «белый» и «до 5 000 рублей», нажимает «Показать» — и его выбрасывает обратно в общую категорию без фильтра. Он думает, что сайт сломан, и уходит. Canonical этой проблемы не создаёт: посетитель видит отфильтрованный список, а поиск получает указание на основную страницу. Поэтому 301 — только для адресов, которых вообще не должно существовать, вроде старого варианта с www.
Светлана
У нас сайт услуг, страниц всего сорок. Плагин показывает «дубли title» на трёх страницах, а в Вебмастере в исключённых пусто. Кому верить?
Анатолий Кузнецов автор
Обоим, просто они говорят о разном. Плагин нашёл одинаковые заголовки — это отдельная проблема: три страницы конкурируют между собой за один и тот же запрос, и в выдачу проходит одна. Вебмастер молчит, потому что содержимое страниц у вас разное, дублями их алгоритм не считает. Исправляется это не тегами, а текстом: разведите три страницы по разному спросу и напишите каждой свой заголовок. На сайте в сорок страниц это работа на пару вечеров.
Роман К.
Не соглашусь с тем, что Clean-param лучше Disallow. У меня магазин, фильтров на тысячи комбинаций, и Clean-param в 500 символов просто не помещается. Закрыл всё через Disallow — нагрузка на сервер упала вдвое, и ничего страшного не случилось.
Анатолий Кузнецов автор
В вашем случае решение верное, и спорить не буду. Лимит в 500 символов на правило действительно упирается в крупные каталоги, хотя правил можно написать несколько. Разница проявляется не на нагрузке, а на адресах, которые уже приносили переходы: если среди закрытых комбинаций была страница, попавшая в выдачу по конкретному запросу, вы её потеряете и не заметите. Проверьте по отчёту о страницах входа за полгода, не было ли таких. Если не было — оставляйте как есть, это нормальная стратегия для магазина с тысячами комбинаций.
Тамара
А как быть с фидами? У меня в исключённых куча адресов с /feed/ на конце. Закрывать?
Юрий
Тамара, у меня та же история была. Фиды поиск и так не показывает, они отдаются как XML. Я их не трогал вообще — просто висят в исключённых и ни на что не влияют. Нервы дороже.
Павел
Дополню про главную. У меня она открывалась и по адресу с /index.php, и через /page/1/ блога. Про index.php знал, а про page/1 даже не думал проверить. Нашёл после вашей статьи — ставил перенаправление, в исключённых стало на два адреса меньше. Мелочь, а раздражала.
Эльвира
Скажите, а три недели — это точно? У меня месяц прошёл, число дублей то же самое. Что делать дальше?
Анатолий Кузнецов автор
Три недели — это срок обработки изменений после того, как робот их увидел. Если он на ваши адреса ещё не заходил, отсчёт не начался. Проверьте две вещи. Первая: в выгрузке исключённых есть колонка с датой последнего посещения роботом — посмотрите, приходил ли он после ваших правок. Вторая: правки вообще применились? Откройте адрес с параметром и посмотрите код ответа и содержимое тега canonical своими глазами, а не по настройкам плагина. Чаще всего оказывается, что плагин настройку показывает, а в коде страницы её нет — мешает кэш.
Станислав
Полезно. Отдельное спасибо за пункт про внутренние ссылки — про него все забывают. Поставил перенаправления, обрадовался, а меню полгода вело на старые адреса.
Оксана
У меня обратная ситуация: дублей нет, в исключённых чисто, а позиции всё равно не растут. Получается, вся эта чистка — вообще не про рост?
Фёдор
Оксана, чистка — это про то, чтобы не мешать. Если дублей нет, значит, этот барьер у вас уже снят и искать надо в другом месте: в спросе, в текстах, в том, что показывают конкуренты в выдаче. У меня было ровно так же, помогло переписывание страниц услуг под реальные запросы, а не под то, как мы сами называем услуги внутри компании.
Ярослав
Вопрос про порядок. Вы пишете разносить правки на две-три недели, но если сайт небольшой и правок всего пять, есть смысл тянуть? Или можно за раз?