Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, страницы автора, пагинация, параметры сортировки, версии с ?amp, ?replytocom, UTM-метки, а иногда и одинаковые записи в разных рубриках. На сайте это быстро превращается в размывание индекса и лишнюю нагрузку на обход.
Если задача не в том, чтобы «запретить всё подряд», а в том, чтобы оставить в индексе только полезные URL, лучше идти по схеме: сначала найти тип дубля, потом выбрать правильный способ обработки — noindex, canonical или закрытие в robots.txt.
Какие дубли в WordPress встречаются чаще всего
В реальных проектах чаще всего всплывают такие сценарии:
- архивы тегов и рубрик дублируют смысл записей;
- страницы автора не несут самостоятельной ценности;
- пагинация архивов индексируется как отдельные страницы без необходимости;
- URL с параметрами создают десятки технических копий;
- одна и та же запись доступна по нескольким путям из-за настроек хлебных крошек, рубрик или плагинов;
- страницы поиска по сайту попадают в индекс.
Не все из них нужно закрывать одинаково. Например, canonical полезен там, где есть основная версия страницы и технические варианты. А noindex уместен для страниц, которые не должны участвовать в поиске, но должны оставаться доступными пользователю и краулеру. robots.txt — это уже про экономию обхода, а не про гарантированное исключение из индекса.
Диагностика: как понять, что именно дублируется
Сначала стоит посмотреть, какие URL уже попали в индекс и как они выглядят в поиске. Для этого удобно использовать:
- Google Search Console — отчеты по страницам и исключенным URL;
site:example.comв поиске для быстрой проверки;- логи краулера вроде Screaming Frog или Sitebulb;
- поиск по шаблонам URL на самом сайте:
/tag/,/author/,?replytocom=,?amp.
Если вы видите, что одна и та же статья доступна по нескольким адресам, проверьте:
- какой URL отдает
200 OK; - есть ли на альтернативных версиях корректный
rel="canonical"; - не закрыт ли важный URL в
robots.txtраньше времени; - не конфликтуют ли SEO-плагины и тема.
Быстрая проверка через консоль
Если нужен быстрый технический осмотр, можно проверить заголовки ответа и canonical через curl:
curl -I https://example.com/sample-post/curl -s https://example.com/sample-post/ | grep -i canonicalЭто не заменяет полноценный краулинг, но помогает сразу увидеть, отдает ли страница редирект, индексируемый код ответа и есть ли canonical в HTML.
Что выбрать: noindex, canonical или robots.txt
Здесь часто ошибаются. Закрыть URL в robots.txt и считать задачу решенной — плохая идея, если страница уже в индексе. Поисковик может сохранить URL без контента, но сам адрес останется в выдаче.
| Способ | Когда использовать | Плюс | Ограничение |
|---|---|---|---|
noindex | Страница не нужна в поиске, но доступна пользователю | Прямой сигнал поисковику | Нужно, чтобы страница была доступна для обхода |
canonical | Есть основная версия и технические копии | Сохраняет полезную версию | Не всегда игнорируется, если контент реально разный |
robots.txt | Нужно снизить обход технических URL | Экономит crawl budget | Не гарантирует удаление из индекса |
Практически это выглядит так: архивы тегов и авторов чаще закрывают через noindex, follow; параметры сортировки и служебные URL — через canonical на чистую версию или через правила в robots.txt, если они не должны обходиться вообще; дубли записей — через 301-редирект на основной адрес.
Пошаговое решение для WordPress
1. Закройте неценные архивы через SEO-плагин или код
Если у вас есть SEO-плагин, сначала проверьте его настройки: часто там можно отключить индексацию тегов, авторов, дат и страниц поиска. Это безопаснее, чем вручную править шаблоны.
Если нужно сделать это кодом, можно добавить noindex для архивов автора и поиска. Пример для functions.php дочерней темы или собственного мини-плагина:
add_filter('wp_robots', function ($robots) {
if (is_author() || is_search() || is_tag()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Такой вариант работает на уровне стандартного API WordPress и не зависит от конкретного SEO-плагина. Но если плагин уже управляет robots-мета, проверьте, не перетирает ли он этот вывод.
2. Уберите дубли с параметрами через canonical
Если URL отличается только параметром, но контент тот же, canonical должен указывать на чистую версию. В большинстве случаев WordPress и SEO-плагины делают это автоматически. Проблема возникает, когда тема или кастомный шаблон выводят неправильный canonical или дублируют его дважды.
Проверка простая: откройте страницу с параметром и убедитесь, что canonical ведет на основной URL без лишних параметров. Если нет, ищите в теме вызовы rel_canonical() и дублирующие SEO-блоки.
3. Закройте технические URL в robots.txt только там, где это оправдано
В robots.txt имеет смысл ограничивать обход служебных адресов, которые не должны сканироваться массово. Но не закрывайте им то, что уже нужно убрать из индекса. Пример аккуратного файла:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /*?replytocom=
Sitemap: https://example.com/sitemap_index.xmlОбратите внимание: правила с параметрами работают не во всех случаях одинаково у разных поисковиков. Поэтому после правки обязательно проверяйте реальное поведение в Search Console, а не только сам файл.
4. Уберите лишние архивы из шаблона, если они не нужны
Иногда проблема не в индексации, а в том, что WordPress сам генерирует архивы, которые вам не нужны. Например, если на сайте нет смысла в страницах автора, можно отключить их вывод на уровне темы или редиректить на главную. Но делать это стоит только если вы уверены, что архивы не используются как навигация.
add_action('template_redirect', function () {
if (is_author()) {
wp_redirect(home_url('/'), 301);
exit;
}
});Такой редирект уместен на небольших сайтах без редакторской структуры. На контентных проектах лучше оставить архив и закрыть его от индексации, чтобы не ломать внутренние ссылки.
Как проверить, что решение сработало
После внедрения не ограничивайтесь просмотром HTML. Нужна проверка в трех слоях:
- HTML — есть ли нужный
canonicalиnoindex; - HTTP — нет ли лишних редиректов и ошибок 4xx/5xx;
- индексация — исчезают ли технические URL из отчета поисковика со временем.
Практический чек-лист:
- откройте страницу в браузере и проверьте исходный код;
- сравните canonical на основной и дубль-версии;
- проверьте, что в
robots.txtнет случайного запрета на важные разделы; - в Search Console отправьте на переобход ключевые страницы, если меняли canonical или robots-мета;
- прогоните сайт краулером и убедитесь, что число дублей снизилось.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt, но она осталась в индексе
Это ожидаемо. Если URL уже известен поисковику, одного Disallow недостаточно. Нужно либо вернуть доступ и поставить noindex, либо отдать 301 на канонический адрес, либо удалить страницу физически, если она больше не нужна.
Поставили noindex на страницу, но она не исчезает
Причины обычно две: страница давно в индексе и поисковику нужно время, либо на ней стоит конфликтующий canonical на другой URL, который тоже не помогает. Проверьте, что страница доступна для обхода и не закрыта одновременно в robots.txt.
Canonical указывает на неправильную версию
Это часто бывает после установки нескольких SEO-плагинов или при кастомной теме, где в head выводится свой canonical. Ищите дублирующий код в шаблонах header.php, в функциях темы и в плагинах, которые вмешиваются в мета-теги.
Слишком агрессивно закрыли архивы
Если закрыть все теги, рубрики и автора без анализа, можно потерять полезные страницы, которые реально приводят трафик. Сначала посмотрите статистику по входам, потом принимайте решение. На некоторых сайтах рубрики — это не мусор, а полноценные посадочные страницы.
Что делать для безопасности и производительности
Чистка дублей полезна не только для SEO. Меньше мусорных URL — меньше лишних обходов, меньше нагрузки на генерацию страниц и меньше шанс, что в индекс попадет служебный контент. Но не стоит превращать это в ручную войну с каждым параметром.
Если у вас много технических дублей, удобнее централизовать правила в одном месте: либо в SEO-плагине, либо в небольшом mu-plugin, либо в дочерней теме. Разбрасывать логику по нескольким файлам — плохая идея, потому что потом никто не вспомнит, почему конкретный URL закрыт.
Если нужен более прикладной набор инструментов для чистки дублей и технических настроек WordPress, можно посмотреть Clearfy Pro. Но даже с плагином полезно понимать, что именно он меняет: robots-мета, архивы, canonical и служебные страницы лучше проверять вручную после обновлений.
В итоге рабочая схема простая: сначала находите тип дубля, потом выбираете один корректный способ обработки, затем проверяете HTML, HTTP и индекс. Если на каждом шаге не смешивать noindex, canonical и robots.txt, WordPress перестает плодить технический шум и становится заметно проще в сопровождении.