Урок 2. Каноникализация и дубли: не размазывай сигналы по копиям Ты купил ссылок, дождался роста поведенческих, а позиции топчутся. Часто причина тупая: половина веса упала не на ту страницу, потому что у тебя живут пять адресов одного и того же документа, и поиск считает их разными.
Как это работает Краулер скачивает не страницы, а HTTP-ответы по адресам. Адрес и документ - разные вещи. Один и тот же материал у тебя обычно доступен по куче URL сразу: http и https, с www и без, со слешем на конце и без, с UTM-хвостом из рассылки, через CDN, через версию для печати. Для робота это, по умолчанию, разные адреса с почти одинаковым текстом. Между обходом и индексом стоит отдельный этап - склейка дублей. Прежде чем построить индекс, система решает: вот эти десять адресов - один документ, и в индекс пойдет один представитель группы, канонический URL. Остальные становятся его псевдонимами. Главное, что надо усвоить: канон поиск выбирает сам, по совокупности сигналов. Он смотрит на редиректы, на то, что лежит в sitemap, на твою внутреннюю перелинковку, на внешние ссылки, на rel=canonical и на саму идентичность контента. Все это - голоса. rel=canonical - это не команда, это один голос. Громкий, но не решающий.
rel=canonical - подсказка, а не приказ. Если ты в каноникал указал страницу A, а ссылаешься и редиректишь на B, поиск склеит на той, в которую верит большинство сигналов. И это, скорее всего, будет B.
Когда сигналы согласованы, склейка предсказуемая и весь вес копится на одном носителе. Когда противоречат - поиск выбирает на свое усмотрение, и ты теряешь контроль над тем, какая страница вообще окажется в выдаче.
На что ты влияешь, а на что нет Это ядро урока, поэтому честно по уровням.
Где у тебя прямой рычаг. Редиректы и коды ответа - полностью твои. Какой хост назначить главным, куда ведут 301, что отдает 200, а что 404 - это решаешь ты на уровне сервера, и это самый весомый сигнал склейки. Содержимое sitemap, внутренняя перелинковка, разметка rel=canonical - тоже целиком под твоим контролем. Сделать так, чтобы все эти источники указывали в одну точку - твоя работа, и она реально двигает результат.
Где влияние косвенное. Сам факт склейки и выбор представителя - вероятностное решение алгоритма. Ты не нажимаешь кнопку склеить, ты лишь выстраиваешь сигналы так, чтобы у системы не осталось разумных вариантов кроме твоего. Чем меньше противоречий - тем выше шанс, что выберут именно твой канон. Но гарантии нет: при конфликте сигналов поиск проигнорирует твой каноникал, и это нормальное штатное поведение, а не баг.
Где ты не влияешь никак. Ты не управляешь тем, как трекинговые параметры обрабатываются на стороне поиска - utm-метки и прочий мусор кампаний для склейки просто отрезаются. Рассчитывать, что ?utm_source=... разведет две страницы в разные документы, нельзя: их сведут в один. Обратная ловушка тоже не в твоей власти - если важные варианты различаются параметром, похожим на метку, их могут ошибочно склеить, и ты об этом узнаешь постфактум. И ты не отменишь группировку по владельцу: система видит, что пачка доменов твоя, и относится к ним как к одному хозяйству.
Что делать
- Выбери один канонический хост и зафиксируй его. Например https://site без www. Один протокол, одна форма.
- Поставь постоянный 301 со всех остальных вариантов на него: с http на https, с www на без-www, с лишних доменов и зеркал. Цепочки редиректов схлопни в один шаг.
- Определись со слешем на конце и держи единый вариант по всему сайту, без редирект-пинг-понга.
- Сделай rel=canonical абсолютным и самореферентным: страница указывает каноником сама на себя, канон отдает 200, а не редирект и не 404.
- Согласуй три источника: то, что в каноникале, то, что в sitemap, и то, на что ведут внутренние ссылки - должно быть буква в букву одним URL.
- Контент-определяющие параметры делай явно непохожими на метки: ?color=red понятнее, чем ?c=1. Для таких вариантов при необходимости отдавай отдельный чистый канон без хвостов.
- С пагинацией не указывай каноникал второй и последующих страниц на первую - это разные документы со своими товарами и ссылками. Канон каждой страницы листинга - она сама.
- Параметры сортировки и фильтров, которые не меняют состав контента, своди каноникалом к базовому URL.
- Дробишь проект по доменам - сначала реши, не дробишь ли ты заодно свой авторитет и историю.
Мифы и устаревшее
- Поставил rel=canonical - значит склеит. Нет. Это голос среди многих. Если редиректы и ссылки говорят другое, каноникал проиграет.
- UTM-метки разводят страницы и спасают от дублей. Нет, метки режутся при склейке, на разведение контента это не работает.
- rel=next и rel=prev держат пагинацию вместе. Эти теги давно не используются поиском как сигнал, на них закладываться бессмысленно. Делай нормальную перелинковку и самореферентные каноникалы.
- Сетка сайтов на отдельных доменах накачает ссылочное. Не накачает: система группирует домены по владельцу, внутренние ссылки сети обесцениваются, а при срабатывании антиспама пессимизация прилетает сразу по всей сетке.
- www и без-www - чисто косметика, разберется сам. Если обе версии независимо набирают ссылки и не склеены, авторитет домена расщепляется надвое. Это и есть размазывание сигналов в чистом виде.
Проверь у себя
- Открой главную в четырех вариантах: http, https, с www, без www. Все три лишних обязаны отдать 301 на один канонический адрес. Проверь коды ответа, а не только то, что в браузере открылось.
- Возьми любую продвигаемую страницу и сравни три вещи: ее rel=canonical, ее URL в sitemap и URL, которым на нее ссылается меню или хлебные крошки. Расхождение хотя бы в одном символе - твой минус.
- Добавь к рабочему URL ?utm_source=test и проверь, что каноникал на странице остался чистым, без метки.
- Пройди по пагинации листинга: убедись, что вторая и третья страницы каноником указывают на себя, а не схлопнуты на первую.