Одна и та же страница может открываться по четырём разным адресам, а для поисковика это уже четыре разные страницы с одинаковым контентом. Размытый ссылочный вес, каннибализация запросов и падение позиций — всё это следствие того, что вы не задали канонический URL. Рассказываю, чем дубли отличаются от канонической версии, какие бывают их виды и как на практике склеить дубли, чтобы сайт снова чистом индексировался.
Что такое дубли страниц и чем они отличаются от канонических
Технические дубли — это одинаковый контент, доступный по разным URL. Важно не путать их с тематическими совпадениями: когда на сайте есть две разные статьи про одно и то же, это контентная проблема, а не техническая. Дубли же возникают из-за особенностей настройки домена, протокола или CMS, а не из-за самого текста.
Канонический URL — это выбранный вами «основной» адрес, тот самый, который должен индексироваться и показываться в выдаче. Когда поисковик видит несколько ссылок на один и тот же материал, вы подаёте ему сигнал, какой именно вариант считать каноническим. Остальные варианты нужно либо перенаправлять на канонический, либо явно помечать как дубли.
Простой пример из практики: страница товара example.ru/product/ открывается по адресам с www и без, с http и https, со слэшем и без, с параметрами сортировки. Человек видит один и тот же товар, а робот записывает в индекс четыре-пять страниц. Именно эту расхожесть и нужно устранять.
Виды технических дублей
Разберу самые частые варианты, с которыми сталкиваюсь на аудитах.
| Тип дубля | Пример | Основное решение |
|---|---|---|
| Зеркало домена | www и non-www |
Выбор основного варианта + 301 |
| Протокол | http и https |
301 на HTTPS |
| Формат URL | со слэшем и без него | Единое правило редиректа |
| Индексный файл | / и /index.html |
301 на корневой URL |
| Параметры | ?sort=price |
canonical + clean-param |
www vs non-www
https://www.example.ru/ ← с www
https://example.ru/ ← без www
Оба адреса открывают одну и ту же страницу, но поисковик считает их двумя разными сайтами. Выбираете один вариант — и настраиваете 301 редирект с другого. non-www короче и популярнее, а www удобнее, если используются поддомены вроде blog.example.ru: куки тогда не «утекают» на поддомены. Главное — консистентность.
http vs https
http://example.ru/ ← без SSL
https://example.ru/ ← с SSL
Если сайт принимает оба протокола — это дубли. Google и Яндекс отдают приоритет HTTPS, да и браузеры помечают http как небезопасный. Решение одно — 301 редирект со всех http-адресов на https.
Trailing slash (слэш в конце)
https://example.ru/page/ ← со слэшем
https://example.ru/page ← без слэша
Для многих CMS это разные URL: один отдаёт HTTP 200, другой — 301 или даже 404. Стандарт для WordPress — слэш для страниц и записей, для самописных сайтов часто используют формат без слэша. Если оба варианта отдают 200 — это дубли, нужно задать единое правило. На больших каталогах такая расхожесть умножается на тысячи товаров, поэтому единое правило на уровне сервера или настроек ЧПУ экономит часы ручной чистки. Подробнее про формат адресов читайте в статье про архитектуру URL и ЧПУ.
index.php / index.html
https://example.ru/ ← корневой URL
https://example.ru/index.php ← с индексным файлом
https://example.ru/index.html ← с индексным файлом
Если по адресу с индексным файлом контент доступен — это дубль. Такой дубль легко упустить, потому что он незаметен на глаз: адрес с индексным файлом открывается только если он прямо указан в ссылке или вбит вручную. Перенаправляете его 301 редиректом на корневой URL.
Параметры в URL
https://example.ru/product/ ← базовый URL
https://example.ru/product/?sort=price ← с параметром сортировки
https://example.ru/product/?utm=mail ← с маркетинговым параметром
Параметры часто генерируют новые страницы с тем же контентом: сортировка, фильтр цены,UTM-метки. Базовый товар остаётся каноническим, а варианты с параметрами либо закрываются от индексации, либо указывают на базовый URL через canonical. Для Яндекса есть специальный инструмент — clean-param в robots.txt.
Пагинация
Страницы пагинации /page/2, /page/3 технически тоже могут дублировать контент первой страницы, если настроить canonical неправильно. Каждая страница пагинации должна иметь self-referencing canonical — то есть указывать сама на себя. Про rel=canonical подробнее рассказываю в статье «rel=canonical: зачем и как настроить».
Почему дубли портят индексацию
Три конкретных последствия, которые видно в статистике:
- Размытый ссылочный вес. Если на страницу ведут бэклинки с разных URL, вес распределяется между ними вместо того, чтобы сконцентрироваться на одном каноническом адресе.
- Каннибализация запросов. Несколько страниц конкурируют за одни и те же поисковые запросы, и поисковик не понимает, какую показывать. В результате ни одна из них не выходит в топ.
- Потеря трафика. В выдаче появляется сразу несколько ваших адресов или вообще тот, который вам не нужен. Часть кликабельности «уходит» на дубли.
Все эти эффекты возникают потому, что робот не может определить, какой вариант главный. Задайте канонический URL — и вес, и запросы, и трафик соберутся в одной точке.
Как бороться с дублями
Шаг 1. Выберите канонический формат
Определите базовые правила до перед тем, как что-то перенаправлять:
- www или non-www? — на практике чаще выбирают non-www, но www удобнее при поддоменах.
- http или https? — всегда HTTPS.
- Со слэшем или без? — со слэшем для директорий, без слэша для файлов.
Шаг 2. Настройте 301 редирект
301 — это постоянный перенос адреса: и браузер, и поисковик понимают, что старый URL больше не существует, и передают весь ссылочный вес на новый. Важно вести сразу на финальный адрес, а не делать цепочки A→B→C, и обновить внутренние ссылки, чтобы не полагаться только на редирект. Про внутреннюю перелинковку и то, как она помогает перераспределять вес, читайте в статье про перелинковку.
Пример настройки в nginx:
# www → non-www
server {
listen 80;
server_name www.example.ru;
return 301 $scheme://example.ru$request_uri;
}
# http → https
server {
listen 80;
server_name example.ru;
return 301 https://example.ru$request_uri;
}
Пример для Apache (.htaccess):
RewriteEngine On
# www → non-www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# http → https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Если сайт на WordPress, достаточно в «Настройки → Общие» задать правильный адрес с нужным доменом и протоколом — система сама настроит редиректы.
Шаг 3. Добавьте rel=canonical
Даже после настройки всех редиректов добавьте self-referencing canonical — ссылку страницы саму на себя:
<link rel="canonical" href="https://example.ru/page/" />
Canonical работает как рекомендация для поисковика, а не как инструкция для браузера. Поэтому 301 и canonical дополняют друг друга: редирект отвечает за UX, каноническая ссылка — за определение главного адреса в индексе.
Шаг 4. Закройте параметры через clean-param
Для Яндекса, если параметры генерируют тысячи почти одинаковых страниц (сортировка, фильтр), есть директива Clean-Param в robots.txt. Она говорит роботу игнорировать указанные параметры при обходе, не ломая при этом сами страницы. Про то, когда clean-param нужен, а когда он может навредить, подробно разбираю в статье «clean-param в robots.txt».
Шаг 5. Проверьте результат
- Откройте все варианты URL — каждый должен редиректить на канонический с кодом 200 на финальном адресе.
- Проверьте теги canonical — все должны указывать на self-referencing URL, а не на другие дубли.
- Убедитесь, что в поиске по названию сайта отображается только один адрес, и нет циклы редиректов (
/page→ 301 →/page/→ 301 →/page).
Как проверить дубли в seoquest.ru
В бесплатной проверке /check/free технические дубли — один из ключевых параметров Health Score. Сервис автоматически проверяет, что:
- используется только один вариант
www/non-www; httpредиректит наhttps;- формат trailing slash консистентен по всему сайту;
- индексные файлы
index.php/index.htmlнедоступны; - параметры в URL корректно обрабатываются.
Достаточно ввести адрес сайта и посмотреть на отчёт: проблемные адреса будут прямо в списке найденных ошибок со ссылкой на статью, как прочитать и что с ними делать. Это быстрее, чем вручную гонять curl для каждого варианта и разбирать заголовки — особенно на больших проектах.
Часто задаваемые вопросы
Какой формат выбрать — www или non-www?
Non-www короче и популярнее, но www удобнее, если есть поддомены: куки не передаются на них. Выбор за вами, главное — чтобы весь сайт использовал один вариант.
Это ошибка, что /page редиректит на /page/?
Нет, это нормальное решение проблемы дублей. Главное, чтобы конечный URL отдавал HTTP 200, а не уходил в цикл редиректов.
Canonical заменит 301 редирект?
Нет. Canonical — рекомендация для поисковика, 301 — инструкция для браузера. Для лучшего UX и веса настраивайте оба: редирект переносит пользователя, каноническая ссылка помогает определиться с адресом в индексе.
Что будет, если не настраивать канонический URL?
Поисковик проиндексирует все варианты как разные страницы: ссылочный вес размоется, позиции упадут, а трафик частично потеряется на дублях.
Можно ли использовать canonical для www/non-www вместо 301?
Технически да, но 301 предпочтительнее. Canonical здесь работает как запасной вариант, если постоянный редирект по какой-то причине не настроен.
Итог
Технические дубли — простая проблема с серьёзными последствиями: размытый ссылочный вес, каннибализация запросов и потеря трафика возникают из-за того, что поисковик видит несколько адресов с одинаковым контентом. Выберите один формат, настройте 301 редиректы, добавьте self-referencing canonical и закройте параметры — и сайт будет индексироваться чисто. Проверить его по техническим и контентным пунктам можно в бесплатной проверке.