WPDream

Как убрать дубли страниц в WordPress через canonical, noindex и 301

Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: архивы тегов, страницы пагинации, параметры в URL, версии с www и без www, HTTP и HTTPS, а иногда еще и дубли из-за плагинов фильтрации. Если не разрулить это на уровне индексации, поисковик начинает тратить краулинговый бюджет на мусор, а нужные страницы получают меньше внимания.

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

Как понять, что у вас именно дубли, а не просто просадка трафика

Сначала стоит проверить симптомы. Если в индексе есть несколько URL с одинаковым или почти одинаковым контентом, это видно по поиску в Яндекс.Вебмастере, Google Search Console и по обычной выборке через site:. Но важнее не сам факт наличия дублей, а их тип.

Типичные источники дублей в WordPress

  • страницы с параметрами ?replytocom=, ?utm_, ?filter= и похожими;
  • архивы рубрик, тегов, авторов и дат, если они дублируют основной контент;
  • страницы пагинации архивов;
  • версии URL со слешем и без слеша, если сайт настроен нестабильно;
  • дубли главной страницы через /index.php, /home или старые редиректы;
  • страницы вложений медиафайлов, если они индексируются отдельно и не несут пользы;
  • контент, который выводится в нескольких архивах одновременно.

Если страницы отличаются только URL, а текст и заголовки почти одинаковые, это уже кандидат на canonical или 301. Если страница нужна пользователю, но не должна участвовать в поиске, чаще подходит noindex. Если URL вообще не должен существовать как отдельная сущность, нужен редирект.

Что выбрать: canonical, noindex или 301

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

СитуацияЧто делатьПочему
Один и тот же контент доступен по старому и новому URL301 редиректПередает сигнал о постоянном переезде и убирает дубль из обращения
Есть похожие страницы, но одна основнаяrel=canonicalПомогает поисковику выбрать основную версию без удаления остальных
Страница нужна пользователю, но не должна индексироватьсяnoindexСтраница остается доступной, но не участвует в поиске

Если коротко: 301 — для переезда, canonical — для склейки, noindex — для исключения из индекса без удаления страницы.

Пошаговая схема: как убрать дубли без поломки сайта

1. Сначала проверьте базовую канонизацию

Убедитесь, что сайт отдает одну основную версию домена: либо с www, либо без него; либо только HTTPS. Это делается на уровне сервера или через настройки WordPress, но не двумя способами сразу. Если редиректы настроены криво, поисковик будет видеть цепочки и петли.

Проверьте, что в Настройки → Общие адрес WordPress и адрес сайта совпадают с основной версией. После этого откройте несколько страниц и посмотрите заголовки ответа:

curl -I https://example.com/page/

В ответе должен быть один финальный 200 OK без лишних промежуточных переходов. Если сначала идет 301 на другой домен, потом еще один 301 на слеш, а потом 200, это уже лишняя цепочка.

2. Склейте старые и неканонические URL через 301

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

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]

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

3. Для архивов и служебных страниц используйте noindex точечно

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

Пример для вывода noindex на архиве тегов и страницах автора, если вы точно понимаете, что они не нужны в поиске:

add_action('wp_head', function () {
    if (is_tag() || is_author()) {
        echo '<meta name="robots" content="noindex,follow">' . "\n";
    }
});

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

4. Для похожих страниц задайте canonical

Canonical полезен там, где есть несколько URL с близким содержимым: например, страницы фильтрации, сортировки или пагинации, если они не должны конкурировать с основной страницей. В WordPress можно вывести canonical вручную, но только если вы понимаете, что именно делаете. Иначе лучше доверить это SEO-плагину.

Пример для нестандартной страницы, где canonical должен указывать на основную категорию:

add_action('wp_head', function () {
    if (is_page('catalog-filtered')) {
        echo '<link rel="canonical" href="https://example.com/catalog/">' . "\n";
    }
});

Важно: canonical не запрещает индексацию. Он лишь подсказывает предпочтительный URL. Если страница совсем не нужна в поиске, canonical не заменяет noindex.

Диагностика: где искать ошибки в WordPress

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

  • настройки постоянных ссылок в WordPress;
  • редиректы на уровне сервера;
  • SEO-плагин и его шаблоны meta robots;
  • архивы тегов, авторов, дат;
  • страницы вложений;
  • параметры в URL, которые генерируют фильтры и сортировки;
  • внутренние ссылки в меню, хлебных крошках и блоках.

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

Как проверить, что решение сработало

После внедрения не ограничивайтесь тем, что «страница открывается». Проверка должна быть технической.

  • Откройте старый URL и убедитесь, что он отдает 301 на нужную страницу.
  • Проверьте финальный URL через curl -I или любой HTTP checker.
  • Посмотрите исходный код страницы и убедитесь, что canonical указывает на правильный адрес.
  • Проверьте, что страницы, закрытые от индексации, действительно отдают noindex,follow или нужный вам вариант.
  • В Search Console и Вебмастере отправьте на переобход важные URL и посмотрите, как они меняют статус.

Для быстрой проверки canonical можно открыть исходный код и найти строку:

<link rel="canonical" href="https://example.com/target-page/">

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

Частые ошибки и как их исправить

Ставят noindex на все подряд

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

Делают canonical на нерелевантную страницу

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

Оставляют цепочки редиректов

Например, http → www → https → слеш. Это не только лишняя нагрузка, но и риск потери части сигналов. Лучше настроить один прямой переход на финальный URL.

Закрывают в robots.txt то, что нужно склеить

Запрет в robots.txt не удаляет URL из индекса сам по себе. Если страница уже известна поисковику, он может продолжать показывать ее без контента. Для дублей чаще нужен canonical, noindex или 301, а не просто Disallow.

Безопасность и производительность: что не стоит делать

Не ставьте несколько SEO-плагинов одновременно, если они оба управляют canonical и meta robots. В таких конфигурациях легко получить конфликт: один плагин выводит canonical, второй перезаписывает его, третий добавляет лишний noindex. В результате диагностика становится сложнее, чем сама проблема.

Если правите редиректы в коде, делайте это после бэкапа и теста на staging. Ошибка в условии может увести весь сайт в цикл редиректов. Для больших сайтов лучше выносить правила на уровень сервера, а не плодить PHP-условия в теме.

Еще один практический момент: не генерируйте canonical динамически на основе реферера, UTM или других параметров. Canonical должен быть стабильным. Если URL меняется от запроса к запросу, поисковик перестает доверять сигналу.

Когда лучше использовать плагин, а когда код

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

Ниже короткое сравнение:

ПодходПлюсыМинусы
ПлагинБыстро, меньше риска ошибиться в шаблонеМожет конфликтовать с темой и другими плагинами
Код в теме/му-плагинеТочный контроль, легко привязать к условиямНужна аккуратность и тестирование
Серверный редиректБыстро и надежно для 301Нужен доступ к конфигу и понимание синтаксиса

Если у вас уже есть SEO-плагин, не дублируйте его функции самописным кодом без необходимости. Лучше выбрать один источник правды для canonical и robots, а редиректы держать отдельно.

В итоге рабочая схема обычно выглядит так: старые и ненужные URL склеиваются через 301, служебные архивы получают noindex,follow, а похожие страницы — корректный canonical. Это не убирает все проблемы магически, но позволяет навести порядок в индексации без лишней ломки сайта.

×
-15%
на премиум-тему
Bono

Создай магазин мечты
на WordPress!

↓ ↓ ↓ ↓ ↓
Купить со скидкой »