Дублем называют страницу, содержимое которой совпадает или почти совпадает с содержимым другой страницы того же сайта, но открывается по другому адресу. Для человека разница незаметна, а для поисковика это два документа, между которыми нужно выбрать. Пока он выбирает, ссылки, поведенческие сигналы и краулинговый бюджет делятся между копиями.
Дубли почти никогда не создают намеренно — они рождаются из особенностей CMS, фильтров, рекламных меток и неаккуратных переездов. Хорошая новость в том, что у каждого типа дублей есть понятное решение.
Откуда берутся дубли
- Зеркала. Сайт открывается и с www, и без него, по http и по https.
- Слеш и регистр. Адреса
/catalog/divanyи/catalog/divany/, а также варианты с заглавными буквами. - Индексные файлы. Одна страница доступна как
/catalog/и как/catalog/index.php. - Параметры. Метки рекламных кампаний, идентификаторы сессий, параметры отслеживания партнёров.
- Сортировки и вид отображения. Список товаров по цене, по популярности, плиткой и списком — по разным адресам с одинаковым набором товаров.
- Пагинация и версии для печати. Страницы списка с номерами, отдельные печатные версии статей.
- Один товар в нескольких категориях, когда адрес карточки зависит от пути, по которому на неё пришли.
Найти дубли помогают отчёты об исключённых страницах в Вебмастере и Search Console и краулеры вроде Screaming Frog: они группируют страницы с одинаковыми заголовками и текстом.
Чем дубли вредят на практике
Опасность дублей не в «штрафе» — специального наказания за технические копии нет. Вред складывается из нескольких эффектов. Во-первых, внешние ссылки и переходы распределяются между разными адресами одной страницы, и ни один из них не набирает полного веса. Во-вторых, поисковик может выбрать основной не ту версию, которую вы продвигаете: например, адрес с параметром сортировки вместо чистого адреса категории. В-третьих, на больших сайтах тысячи копий отнимают у робота время, которое он мог бы потратить на новые товары и материалы. И наконец, в отчётах аналитики трафик одной страницы оказывается разбросан по нескольким адресам, что мешает оценивать результат.
Отдельно стоит упомянуть частичные дубли — страницы, которые не совпадают полностью, но отличаются лишь мелочами: цветом товара, городом в заголовке, одним абзацем. Технически это разные страницы, но поисковик может посчитать их слишком похожими и оставить в индексе одну. Для таких случаев нужно либо добавлять существенно разное содержимое, либо объединять страницы и выбирать одну основную.
Способы склейки и когда какой выбрать
| Способ | Как работает | Когда применять |
|---|---|---|
| 301-редирект | Сервер отвечает, что страница переехала навсегда, и отправляет посетителя и робота на новый адрес; сигналы передаются основной странице | Зеркала, слеш, регистр, индексные файлы, смена адресов, удалённые страницы с аналогом |
| rel="canonical" | Тег на странице указывает основную версию; страница остаётся доступной посетителям | Сортировки, вид отображения, параметры отслеживания, один товар в нескольких категориях |
| Clean-param | Директива robots.txt сообщает Яндексу, какие параметры не меняют содержимое | Метки, идентификаторы сессий и прочие параметры, которых много и которые нельзя убрать редиректом |
| noindex | Страница исключается из индекса, но остаётся доступной; её сигналы основной странице не передаются | Служебные страницы, которые не являются копией конкретной страницы: внутренний поиск, личные списки |
| Disallow | Робот перестаёт обходить раздел | Бесконечные комбинации параметров, когда главная задача — сэкономить краулинговый бюджет |
Общее правило: если дубль посетителю не нужен — ставьте редирект; если нужен, но поисковику достаточно одной версии, — canonical. noindex и Disallow убирают страницы из поиска, но ничего не склеивают.
Способы можно и нужно сочетать. Типичная схема для интернет-магазина выглядит так: зеркала, слеш и индексные файлы склеены 301-редиректами на уровне сервера; адреса с сортировками и видом отображения указывают canonical на основную категорию; рекламные метки и идентификаторы сессий описаны в Clean-param; результаты внутреннего поиска закрыты noindex, а бесконечные комбинации фильтров — запрещены к обходу.
301-редирект
Редирект с кодом 301 — постоянное перенаправление. Поисковики со временем заменяют в индексе старый адрес новым и передают ему накопленные сигналы. Для склейки зеркал редирект настраивают на уровне сервера. Пример для nginx, который переводит все запросы с www на домен без www по https:
server {
listen 443 ssl;
server_name www.example.ru;
return 301 https://example.ru$request_uri;
}
Код 302 означает временное перенаправление: поисковик может оставить в индексе старый адрес и не склеивать страницы. Используйте его только для действительно временных ситуаций — например, на время акции.
Цепочки и петли
Цепочкой называют последовательность редиректов: с http на https, затем с www на без www, затем со старого пути на новый. Каждое звено замедляет обход и увеличивает риск, что робот не дойдёт до конца. Настраивайте правила так, чтобы любой старый адрес вёл на конечный за один шаг, и обновляйте внутренние ссылки на сайте, чтобы они сразу указывали на конечные адреса. Петля — редирект, который возвращается к исходному адресу, — делает страницу недоступной полностью.
rel="canonical"
Тег canonical размещают в разделе head страницы-дубля, а у основной страницы — указывающим на саму себя:
<link rel="canonical" href="https://example.ru/catalog/divany/">
Важно помнить, что canonical — подсказка. Поисковик сравнивает его с другими сигналами: куда ведут внутренние ссылки, какой адрес указан в sitemap, насколько похожи страницы. Если сигналы противоречат друг другу, он выберет основную версию сам, и это не всегда будет та, которую вы задумали. Проверить, какую версию выбрал Google, можно в инструменте проверки URL в Search Console.
Ошибки с canonical
- Canonical указывает на страницу с редиректом, ошибкой 404 или закрытую через noindex.
- Все страницы сайта ссылаются canonical на главную — частая ошибка шаблонов.
- Canonical ведёт на страницу с совсем другим содержимым: поисковик проигнорирует такую подсказку.
- Страница-дубль закрыта в robots.txt, и робот не видит её canonical.
- В sitemap перечислены неканонические адреса, а внутренние ссылки ведут на дубли.
Пагинация, фильтры и параметры
Страницы пагинации — вторая, третья и следующие страницы списка — не являются дублями первой: на них другие товары или материалы. Распространённая ошибка — ставить на них canonical на первую страницу: тогда поисковик может перестать обходить товары, которые доступны только с дальних страниц. Надёжнее оставить каждой странице пагинации canonical на саму себя, добавить номер страницы в title и следить, чтобы все товары были достижимы по ссылкам. Атрибуты rel="prev" и rel="next" Google для понимания пагинации не использует.
С фильтрами сложнее: часть комбинаций соответствует реальному спросу и заслуживает собственной посадочной страницы, остальные порождают мусор. Как решить, какие фильтры открывать для индексации, разобрано в уроке «SEO интернет-магазина». Для параметров, которые не меняют содержимое, — меток и идентификаторов сессий — используйте canonical и Clean-param для Яндекса.
Совет. Не размечайте рекламные ссылки метками, которые создают новые адреса внутри сайта. Метки нужны только на входе с внешних площадок; внутренние ссылки должны вести на чистые канонические адреса.
Как убедиться, что склейка сработала
Настроить редиректы и canonical — половина дела. Поисковикам нужно время, чтобы переобойти страницы и пересмотреть свой выбор, а ошибки в настройке нередко обнаруживаются только через несколько недель. Проверяйте результат по нескольким признакам.
- Ответы сервера. Каждый вариант зеркала и слеша отдаёт 301 сразу на конечный адрес, без промежуточных шагов. Это легко проверить краулером или онлайн-проверкой заголовков.
- Выбранная каноническая версия. В Search Console инструмент проверки URL показывает и указанный вами canonical, и тот, который выбрал Google. Если они расходятся, ищите противоречивые сигналы.
- Исключённые страницы. В Вебмастере неканонические и перенаправленные адреса постепенно переходят в группы исключённых с соответствующей причиной, а число дублей в индексе снижается.
- Внутренние ссылки. Краулер не находит ссылок на адреса с редиректами и на неканонические версии: шаблоны меню, хлебных крошек и карточек ведут сразу на основные адреса.
- Карта сайта. В sitemap.xml остались только канонические адреса с кодом 200.
Если через несколько недель поисковик по-прежнему держит в индексе дубли, проверьте, не открыты ли они по внутренним ссылкам из какого-то забытого блока — например, из фильтра, блока «недавно просмотренные» или старой версии меню. Как правило, именно такие ссылки снова и снова возвращают роботу ненужные адреса.
Что сделать после урока
- Проверьте, открывается ли сайт по http, по адресу с www и без слеша на конце, и настройте 301-редиректы на одну основную версию.
- Выгрузите из краулера страницы с одинаковыми title и найдите основные источники дублей.
- Убедитесь, что у каждой страницы есть корректный canonical — на саму себя или на основную версию — и что он не ведёт на редиректы и ошибки.
- Добавьте Clean-param для меток и параметров отслеживания в robots.txt для Яндекса.
- Найдите цепочки редиректов и замените их прямыми перенаправлениями на конечные адреса.
- Через несколько недель сравните выбранные поисковиками канонические версии ключевых страниц с теми, которые указали вы, и разберите расхождения.