Тег canonical
Тег canonical — это элемент link с rel="canonical", который указывает, какой URL представляет содержимое страницы. Главное, что важно знать о нём с первой строки: указание канонического URL — это подсказка, а не правило. Google может выбрать другую страницу. В уроке — синтаксис, два способа подачи, правила из документации и ловушки, включая пагинацию и PDF.
Общую картину дублей мы разобрали в уроке про дублированный контент. Здесь — сам тег. Основа — страница Google об объединении дублирующихся URL.
Синтаксис
<!-- В head дублирующей страницы /dresses/green-dresses?sort=price --> <link rel="canonical" href="https://example.com/dresses/green-dresses" /> <!-- То же самое — на самой канонической странице (самоссылающийся canonical) --> <link rel="canonical" href="https://example.com/dresses/green-dresses" />
Google рекомендует добавлять такой же самоссылающийся элемент на саму каноническую страницу. Если у неё есть мобильная версия на отдельном URL, к ней добавляют ещё и rel="alternate" с условием media.
Правила размещения
- Только в head. Элемент принимается, только если находится в разделе head HTML, поэтому как минимум head должен быть корректным HTML;
- абсолютные URL. Относительные пути поддерживаются, но могут вызвать проблемы, например если тестовый сайт случайно открыт для обхода. Хороший пример — полный адрес с протоколом и доменом;
- один способ, а не два. Элемент в HTML и заголовок HTTP допустимы оба, но использовать их одновременно более подвержено ошибкам: в одном можно указать один URL, а в другом — другой. Выберите один;
- JavaScript. Если элемент добавляется скриптом, его нужно внедрять корректно; лучше задать его в исходном HTML и не менять скриптом. Подробнее — в уроке про JavaScript и SEO.
Заголовок HTTP: единственный путь для PDF
Если вы можете менять конфигурацию сервера, канонический URL указывают заголовком ответа Link с rel="canonical". Это работает и для не-HTML-документов, например PDF, а у HTML-элемента такой возможности нет. Типичный случай — версия контента в нескольких форматах, у каждого свой URL: для файла .docx можно отдать заголовок с адресом PDF-версии.
HTTP/1.1 200 OK Link: <https://www.example.com/downloads/white-paper.pdf>; rel="canonical"
Как и для элемента, здесь нужны абсолютные URL. Google поддерживает этот способ только для результатов веб-поиска.
Canonical и редирект: не про «вес»
Часто сравнивают так: canonical передаёт «около 100%» ссылочного веса, а 301 — «90–99%». Таких цифр в документации нет, и сравнивать способы по ним нельзя. Документация сравнивает их иначе: перенаправление и rel="canonical" — оба сильные сигналы, карта сайта — слабый. Разница практическая:
- перенаправление — когда дубликат нужно убрать: используйте его, когда хотите избавиться от существующих дублей. Пользователь на дубль больше не попадёт. Для самого быстрого эффекта нужны серверные перенаправления;
- rel="canonical" — когда дубль должен остаться доступным: фильтры, сортировка, варианты;
- карта сайта — все указанные в ней страницы предлагаются как канонические, а дубликаты Google определяет по схожести. Удобно для больших сайтов, но сигнал слабее.
Постоянные и временные перенаправления различаются, и это отдельная тема в уроке про редиректы; цели цепочек видны в проверке редиректов.
Ловушки
- Пагинация. Для последовательности страниц Google говорит прямо: не используйте первую страницу как каноническую для всех, а дайте каждой странице собственный канонический URL. Каждая страница с
?page=n— отдельная страница для Google, а не дубль первой; - hreflang, lang, media и type внутри rel="canonical" для канонизации не используются: альтернативные версии указываются другими аннотациями, например rel="alternate" hreflang. Версии на разных языках считаются дублями, только если основной контент на одном языке;
- noindex вместо canonical. Google не рекомендует использовать noindex, чтобы предотвратить выбор канонической страницы в пределах сайта: он полностью блокирует страницу в поиске;
- Противоречия. Один URL в карте сайта, другой в rel="canonical": для одной страницы нельзя указывать разные канонические URL разными способами;
- Относительные пути и фрагменты URL (фрагмент как канонический указывать нельзя).
Чего в документации нет
Утверждения, которые источниками не подтверждаются: передача «около 100%» веса, потеря «на цепочке A → B → C» и «противоречие» canonical на страницу с noindex как отдельное правило. Это не значит, что противоположное верно. Это значит, что надёжнее опираться на то, что написано в документации: подсказка, head, абсолютные URL, один способ, один URL на страницу.
Как проверить
- Откройте страницу в анализаторе страницы и убедитесь, что canonical один, лежит в head и ведёт на абсолютный URL.
- Пройдите по сайту краулером: найдите страницы без canonical, с относительными путями и с разными URL в заголовке и в HTML.
- Проверьте, что страницы пагинации указывают каждая на себя.
- Через проверку URL в Search Console сравните объявленный и выбранный Google канонические URL; массово — через аудит URL.
- Если Google выбрал не ту страницу, смотрите на противоречивые сигналы: редиректы, карту сайта, внутренние ссылки, протокол.
Чек-лист
- Canonical задан в head, а не в body.
- URL абсолютные, без фрагментов.
- Используется один способ: элемент или заголовок.
- Каноническая страница ссылается на себя.
- Страницы пагинации не указывают на первую.
- Для PDF и других файлов используется заголовок HTTP.
- Внутренние ссылки и карта сайта ведут на канонический URL.
Ошибки
- Считать canonical командой, а не подсказкой.
- Указывать на первую страницу из всех страниц пагинации.
- Ставить тег в body или ломать head невалидным HTML.
- Давать разные URL в заголовке и в HTML.
- Закрывать дубли в robots.txt вместо canonical: об этом — в уроке про robots.txt и canonical.
Что дальше
Дальше — SEO в CMS: как настроить эти правила в системе управления сайтом. Про границу между запретом обхода и canonical — в уроке про robots.txt и canonical, о правилах URL — в уроке про структуру URL.