Дубли страниц на сайте: как найти и убрать

Коротко

Дубли страниц — это разные адреса, по которым открывается одинаковое или почти одинаковое содержимое. Они появляются из-за версий с www и без, со слешем и без, из-за GET-параметров, пагинации, фильтров каталога, служебных страниц CMS и товаров, привязанных к нескольким разделам. Поисковик тратит на них ресурсы обхода, сам выбирает, какую версию показывать, и нередко выбирает не ту.

Найти дубли можно в Яндекс Вебмастере, в отчёте об исключённых страницах, и краулером, который обходит сайт и сравнивает заголовки и содержимое. Убирают их тремя способами: 301-редиректом, если лишний адрес не нужен вовсе, атрибутом canonical, если адрес нужен посетителям, и закрытием от индексации для служебных страниц. Для GET-параметров в Яндексе есть отдельная директива Clean-param.

Тип дубляПримерЧем убирать
www и без www, http и httpswww.site.ru и site.ru301-редирект на главное зеркало
Слеш в конце адреса/uslugi и /uslugi/301-редирект на один вариант
Главная с index.php/index.php и /301-редирект на корень
UTM и служебные параметры/?utm_source=…Clean-param и canonical
Сортировка и фильтры/catalog/?sort=pricecanonical или закрытие от индексации
Товар в нескольких разделах/catalog/a/item/ и /catalog/b/item/Один канонический адрес

Основная мысль

Дубли страниц — это не ошибка контента, а ошибка адресов: пока у страницы несколько URL, поисковик сам решает, какой из них главный, и его решение может не совпасть с вашим.

Сами по себе дубли редко приводят к санкциям. Проблема в другом: вес ссылок и поведенческие сигналы размазываются между несколькими адресами, робот тратит время на копии вместо новых страниц, а в выдаче вместо чистой карточки товара может оказаться адрес с параметром сортировки.

Поэтому задача не в том, чтобы «удалить копии», а в том, чтобы у каждой страницы был один канонический адрес, а все остальные варианты либо перенаправляли на него, либо явно на него указывали. Решение почти всегда настраивается один раз на уровне сервера, CMS или шаблона, а не правится вручную на каждой странице.

Откуда берутся дубли страниц сайта

Большая часть дублей появляется автоматически. CMS, сервер и маркетинговые инструменты создают новые адреса, о которых владелец не подозревает.

Технические зеркала

  • версии сайта с www и без www;
  • версии по http и https;
  • адреса со слешем в конце и без него;
  • адреса в разном регистре: /Catalog/ и /catalog/;
  • двойные слеши внутри адреса.

Если сервер отвечает кодом 200 на все эти варианты, у каждой страницы сайта появляется несколько копий.

Главное зеркало выбирают один раз и больше не меняют: сейчас это почти всегда версия с HTTPS, а с www или без — вопрос вкуса. Важнее, чтобы выбранный вариант совпадал везде: в редиректах, в canonical, в sitemap.xml, во внутренних ссылках и в настройках CMS. Расхождение хотя бы в одном месте даёт поисковику противоречивые сигналы, и он может выбрать не ту версию.

GET-параметры

Метки UTM из рекламы и рассылок, идентификаторы сессий, параметры сортировки, количества товаров на странице, вида отображения. Каждое сочетание параметров — новый адрес с тем же содержимым. Робот находит их по внешним ссылкам, из рекламных кампаний и из истории переходов.

Пагинация, фильтры и служебные страницы

Страницы пагинации, результаты фильтра, версии для печати, страницы поиска по сайту, архивы по датам и авторам. Одни из них полезны посетителям и могут быть в поиске, другие являются чистыми дублями.

Ошибки структуры

Товар, привязанный к нескольким разделам каталога, открывается по нескольким адресам. Страница услуги скопирована для другого города без изменения текста. После редизайна старые адреса продолжают работать параллельно с новыми, вместо того чтобы перенаправлять на них.

Дубли главной страницы

Главная — самая ценная страница сайта, и у неё дублей обычно больше всего. Типичный набор выглядит так:

  • site.ru и www.site.ru;
  • http://site.ru и https://site.ru;
  • site.ru/index.php и site.ru/index.html;
  • site.ru/?utm_source=… и другие адреса с параметрами;
  • site.ru/home/ или site.ru/glavnaya/, если главная создана как обычная страница.

Проверить это просто: откройте каждый вариант в браузере и посмотрите, остаётся ли адрес в строке или меняется на основной. Надёжнее проверить код ответа сервисом проверки HTTP-заголовков: основная версия отвечает 200, остальные — 301 с переадресацией на неё.

Редирект с index.php на корень

На Apache с .htaccess правило выглядит так. Условие с THE_REQUEST нужно, чтобы не зациклить внутренние перенаправления, которые WordPress и 1С-Битрикс делают через тот же index.php:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php[?\ ]
RewriteRule ^index\.php$ / [R=301,L]

На nginx аналогичную задачу решает проверка исходного запроса в блоке server:

if ($request_uri ~ "^/index\.php$") {
    return 301 /;
}

Перед внесением изменений сделайте копию конфигурации и проверьте, как сайт отвечает на главную и внутренние страницы. Подробно синтаксис редиректов для Apache, nginx, WordPress и 1С-Битрикс разобран в статье о настройке 301 редиректа.

Как найти дубли страниц

Надёжнее всего использовать несколько источников: данные поисковика показывают, какие дубли уже попали в индекс, а краулер — какие могут туда попасть.

Яндекс: дубли страницы в Вебмастере

В отчёте о страницах в поиске Яндекс Вебмастер показывает исключённые адреса и причину исключения. Страницы со статусом дубля — первый список для разбора: рядом указан адрес, который Яндекс выбрал каноническим. Если выбран не тот адрес, это прямой сигнал настроить редирект или canonical. В диагностике сервис также предупреждает о дублях с GET-параметрами. Если сайт ещё не подключён, начните с инструкции о том, как в Яндекс Вебмастер добавить сайт.

Проверка дублей страницы краулером

Краулер — программа, которая обходит сайт как поисковый робот и собирает данные о каждом адресе. Для поиска дублей в отчёте смотрят:

  1. Одинаковые заголовки title и описания description на разных адресах.
  2. Одинаковые заголовки H1.
  3. Страницы с одинаковым содержимым или хешем содержимого.
  4. Адреса с параметрами, которые отвечают кодом 200.
  5. Страницы без canonical или с canonical на другой адрес.

Поиск по сайту в поисковике

Оператор site: с фрагментом заголовка страницы показывает, сколько адресов с этим текстом есть в индексе. Способ грубый, но быстро выявляет копии страниц услуг и товаров.

Как найти дубли страниц вручную

Для небольшого сайта можно пройти по основным шаблонам вручную: главная, раздел, карточка, статья. Для каждого шаблона добавьте к адресу слеш или уберите его, поменяйте регистр, допишите произвольный параметр. Если страница открывается без редиректа и без canonical на основной адрес, у этого шаблона есть дубли.

Как убрать дубли страниц

Способ зависит от того, нужен ли дублирующий адрес посетителям.

301-редирект

Если адрес не нужен никому, его перенаправляют на основной. Это подходит для зеркал с www и http, слеша в конце, index.php, старых адресов после смены структуры. Редирект передаёт посетителя и сигналы страницы на основной адрес, и со временем поисковик перестаёт обходить старый вариант.

Атрибут canonical

Если адрес нужен посетителям — сортировка каталога, адрес с UTM-меткой, версия страницы с параметром фильтра — на нём оставляют содержимое, но в разделе head указывают основной адрес:

<link rel="canonical" href="https://site.ru/catalog/divany/" />

Canonical — рекомендация для поисковика, а не команда. Если страницы заметно различаются по содержимому, поисковик может её не учесть.

Clean-param для Яндекса

Директива в robots.txt сообщает Яндексу, какие GET-параметры не влияют на содержимое страницы. Робот перестаёт обходить копии с этими параметрами и учитывает основной адрес:

User-agent: Yandex
Clean-param: utm_source&utm_medium&utm_campaign&utm_content&utm_term

Если параметр влияет на содержимое только в одном разделе, после списка параметров указывают префикс пути. Правила составления robots.txt описаны в статье про robots.txt и sitemap.xml.

Закрытие от индексации

Служебные страницы, которые не нужны в поиске, — корзину, личный кабинет, результаты поиска по сайту, версии для печати — закрывают мета-тегом robots со значением noindex или директивой Disallow. Мета-тег надёжнее убирает страницу из индекса, а Disallow запрещает обход; одновременно их применять к одной странице бессмысленно, потому что робот не увидит мета-тег закрытой страницы.

Что выбрать

СитуацияСпособ
Адрес не нужен посетителям301-редирект
Адрес нужен, содержимое то жеcanonical на основной адрес
Параметры не меняют содержимоеClean-param для Яндекса и canonical
Служебная страницаnoindex или Disallow
Копия текста на разных страницахПереписать текст или объединить страницы

Порядок работ: от поиска до проверки

Дубли удобнее убирать не точечно, а по шаблонам. Одна правка в конфигурации сервера или в шаблоне раздела исправляет сотни адресов сразу.

  1. Выгрузите список исключённых дублей из Вебмастера и результаты обхода краулером.
  2. Сгруппируйте адреса по причине: зеркала, слеш, параметры, пагинация, разделы каталога, служебные страницы.
  3. Для каждой группы выберите способ: редирект, canonical, Clean-param или закрытие.
  4. Внесите изменения сначала на тестовой копии сайта, если она есть, или в период минимальной нагрузки.
  5. Проверьте коды ответа на выборке адресов из каждой группы: редиректы должны быть одношаговыми, без цепочек.
  6. Обновите sitemap.xml, чтобы в нём остались только канонические адреса.
  7. Отправьте ключевые страницы на переобход и через две-три недели сравните отчёт об исключённых страницах с исходным.

Сценарий: сайт после переезда

После переезда на новый движок старые адреса часто продолжают открываться, а новые дублируют их. Здесь основной инструмент — карта редиректов: таблица соответствия старых и новых адресов, по которой настраиваются 301-редиректы. Без неё после переезда в индексе одновременно оказываются обе версии, и позиции проседают.

Сценарий: страницы для разных городов

Компания работает в нескольких городах и создаёт страницу услуги для каждого, меняя в тексте только название города. Для поисковика такие страницы почти одинаковы. Решение — наполнять их различающимся содержимым: адреса и контакты филиала, условия доставки, сроки, примеры работ в этом городе. Если такого содержимого нет, лучше оставить одну страницу со списком городов.

Сценарий: тестовая копия в индексе

Разработчик сделал копию сайта на поддомене для тестов и не закрыл её от индексации. Через какое-то время в поиске появляются страницы с тестового адреса. Тестовую копию закрывают паролем на уровне сервера, а уже попавшие в индекс адреса удаляют через инструмент удаления в Вебмастере после закрытия доступа.

Дубли в интернет-магазине: фильтры и сортировка

В каталоге с фильтрами число возможных адресов растёт очень быстро. Три фильтра по пять значений и две сортировки дают сотни комбинаций для каждого раздела, и робот может обходить их вместо новых товаров.

Какие страницы фильтра оставить в поиске

Некоторые комбинации фильтра — полноценные посадочные страницы: «диваны угловые», «кроссовки мужские чёрные». По ним ищут, и для них стоит сделать отдельные адреса без параметров, собственные заголовки, описания и текст. Такие страницы в индексе нужны, и дублями они не считаются, если у них уникальные метаданные и содержимое.

Что закрыть

Остальные комбинации — сочетания нескольких значений, сортировки по цене и популярности, выбор количества товаров на странице — в поиске не нужны. Для них используют canonical на раздел, Clean-param для параметров сортировки или закрытие от индексации. Решение принимают по данным: сначала смотрят, какие комбинации ищут, и только потом закрывают остальное.

Товары-варианты

Если каждый цвет или размер товара заведён отдельной карточкой с одинаковым описанием, это тоже дубли. Правильнее оформлять варианты внутри одной карточки — торговыми предложениями в 1С-Битрикс или вариациями в WooCommerce — либо делать различающиеся описания, если варианты ищут отдельно.

Смысловые дубли

Кроме технических дублей есть смысловые: разные страницы, которые отвечают на один и тот же запрос. Например, две статьи блога на одну тему, страница услуги и статья о той же услуге, страницы для разных городов с одинаковым текстом.

Как их распознать

В Вебмастере по одному запросу поочерёдно показываются разные страницы сайта, а позиции скачут. В краулере такие страницы часто имеют близкие заголовки. Отличить смысловой дубль от нормальной перелинковки помогает простой вопрос: если убрать одну из страниц, потеряет ли посетитель что-то важное.

Что с ними делать

Если страницы действительно повторяют друг друга, их объединяют: лучший текст оставляют на одном адресе, со второго ставят 301-редирект. Если у страниц разные задачи, их разводят: меняют заголовки, уточняют содержание, настраивают внутренние ссылки так, чтобы было ясно, какая страница главная по теме.

Дубли на WordPress

Типичные источники

  • страницы вложений: у каждой загруженной картинки может быть своя страница;
  • архивы меток, авторов и дат, повторяющие содержимое рубрик;
  • адреса вида /?p=123 для записей;
  • страницы с параметром replytocom в комментариях;
  • ленты RSS для каждой рубрики и записи.

Что настроить

SEO-плагин вроде Rank Math или Yoast SEO сам выводит canonical на каждой странице и позволяет закрыть от индексации архивы, которые не нужны. В настройках плагина есть опция перенаправления страниц вложений на родительскую запись — её стоит включить. Архивы авторов на сайте с одним автором лучше отключить или закрыть. Слеш в конце адреса WordPress выравнивает сам по структуре постоянных ссылок. Подробный набор настроек — в статье про SEO-настройку WordPress.

Дубли на 1С-Битрикс

Типичные источники

  • адреса с index.php в конце;
  • параметры пагинации вида PAGEN_1 и параметры сортировки;
  • товары, привязанные к нескольким разделам каталога;
  • страницы умного фильтра, если для них не настроены отдельные адреса и метаданные;
  • адреса детальных страниц по ID и по символьному коду одновременно;
  • служебные параметры, которые компоненты добавляют к ссылкам.

Что настроить

В компонентах каталога есть параметр установки канонического адреса для детальной страницы: при включении товар из нескольких разделов получает один canonical. Для пагинации и сортировки используют canonical на первую страницу раздела или Clean-param. Редирект с index.php и выравнивание слеша настраиваются в .htaccess или конфигурации nginx. Шаблоны адресов в настройках инфоблока должны быть однозначными, без вариантов с ID и кодом одновременно. Остальные SEO-настройки Битрикса собраны в статье про SEO-настройку 1С-Битрикс.

Типичные ошибки при устранении дублей

На чём опасно экономить

  • Закрыть всё с параметрами через Disallow, включая страницы фильтров, которые приносят трафик.
  • Поставить canonical на главную со всех страниц сайта.
  • Настроить редирект без проверки и получить цепочки или циклы переадресаций.
  • Удалить копии страниц без редиректа и получить ошибки 404 вместо дублей.
  • Указать в canonical адрес с http или с www, когда основная версия другая.
  • Оставить в sitemap.xml адреса, которые перенаправляют или указывают canonical на другой адрес.
  • Исправить шаблон, но не проверить, как ведёт себя поиск через несколько недель.

Чек-лист

  1. Выбрано главное зеркало, остальные версии перенаправляются 301-редиректом.
  2. Слеш в конце адресов выровнен для всего сайта.
  3. Главная не открывается по index.php и index.html.
  4. Для UTM и служебных параметров настроен Clean-param.
  5. На всех страницах есть canonical на собственный основной адрес.
  6. Товары из нескольких разделов имеют один канонический адрес.
  7. Служебные страницы закрыты от индексации.
  8. В sitemap.xml только канонические адреса с ответом 200.
  9. Отчёт Вебмастера по исключённым страницам проверен после изменений.
  10. Краулер не находит одинаковых title и H1 на разных адресах.

Частые вопросы

Что такое дубли страниц?

Разные адреса, по которым открывается одинаковое или почти одинаковое содержимое. Поисковик считает их отдельными страницами и сам выбирает, какую показывать.

Чем опасны дубли страниц сайта?

Размыванием сигналов между адресами, лишней нагрузкой на обход и тем, что в поиске может оказаться не тот адрес. Прямые санкции за технические дубли встречаются редко.

Как проверить дубли страницы в Яндексе?

Открыть в Вебмастере отчёт о страницах в поиске и отфильтровать исключённые со статусом дубля. Рядом с каждым адресом будет указан адрес, который Яндекс считает основным.

Как найти дубли страниц без платных сервисов?

Использовать отчёты Вебмастера, бесплатную версию краулера для небольшого сайта и ручную проверку шаблонов: слеш, регистр, произвольный параметр.

Что лучше: 301-редирект или canonical?

Редирект, если адрес не нужен посетителям. Canonical, если адрес нужен, но в поиске должен быть другой.

Нужно ли убирать дубли пагинации?

Страницы пагинации содержат разные товары, поэтому полными дублями не являются. Обычно на них оставляют canonical на себя или на первую страницу раздела в зависимости от структуры каталога и уникальности текста.

Как убрать дубли страниц, созданные UTM-метками?

Прописать Clean-param для Яндекса и убедиться, что на страницах выводится canonical на адрес без параметров.

Сколько времени Яндекс убирает дубли после исправления?

Зависит от частоты обхода сайта: от нескольких дней до нескольких недель. Ускорить можно отправкой основных адресов на переобход.

Почему Яндекс выбрал каноническим не тот адрес?

Чаще всего потому, что на основной адрес ведут не все внутренние ссылки, в sitemap.xml указан другой вариант или canonical противоречит редиректам. Сигналы нужно привести к одному адресу.

Нужно ли удалять дубли из индекса вручную?

Обычно нет. После настройки редиректов и canonical поисковик сам заменяет дубли основными адресами при следующем обходе.

Можно ли проверить дубли страницы перед запуском сайта?

Да, краулером на тестовой версии. Это дешевле, чем исправлять дубли, которые уже попали в индекс.

Итог

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

Главное — решать задачу на уровне правил: одно главное зеркало, единый формат адресов, canonical во всех шаблонах, чистая карта сайта. Тогда новые страницы не будут создавать новые дубли, и проверка раз в квартал займёт полчаса. Дубли — одна из тем технического SEO, и разбирать их удобнее вместе с остальными проблемами индексации.

Если нужно найти и убрать дубли на сайте, я как частный разработчик проведу аудит сайта на WordPress или 1С-Битрикс, настрою редиректы, canonical и robots.txt и проверю результат в Вебмастере. Работаю напрямую, без посредников.

Что будем искать? Например,Продвижение