Дубли в WordPress редко выглядят как одна очевидная ошибка. Чаще это набор мелких вещей: одна и та же запись доступна по нескольким URL, архивы автора и метки дублируют контент, пагинация индексируется без необходимости, а страницы с параметрами создают лишние версии. В результате поисковик тратит обход на мусор, а в индексе остаются не те страницы, которые вы хотите продвигать.
Ниже разберём рабочий сценарий: как найти источник дублей, что можно закрыть от индексации, где нужен canonical, а где лучше править шаблон или настройки плагина. Без магии и без опасных советов вроде массового удаления архивов вслепую.
Как понять, что у вас именно проблема дублей
Симптомы обычно видны в Search Console и в логике URL. Если одна и та же страница открывается с разными адресами, а поисковик показывает в выдаче не тот вариант, который вы считаете основным, это уже повод проверить конфигурацию сайта.
Что смотреть в первую очередь
- страницы доступны и с
www, и без него; - есть версии с
httpиhttps; - одна запись открывается через архив категории, метки, автора и дату;
- в индексе есть URL с параметрами вроде
?replytocom=,?utm_,?ampили сортировками; - пагинация архивов индексируется без ограничений;
- страницы вложений медиафайлов живут отдельно и дублируют контент вложения.
Если сайт небольшой, часть проблем можно увидеть вручную: откройте одну запись и проверьте, сколько вариантов URL ведут на неё. Если сайт крупнее, удобнее начать с отчётов Search Console и выгрузки URL из краулера.
Быстрая диагностика через браузер и консоль
Проверьте заголовки и канонический адрес. Это не заменяет аудит, но быстро показывает, как WordPress и тема отдают страницу поисковику.
curl -I https://example.com/sample-post/curl -s https://example.com/sample-post/ | grep -i canonicalЕсли canonical указывает на другой адрес, чем тот, который вы считаете основным, сначала ищите причину в теме, SEO-плагине или редиректах. Исправлять нужно источник, а не только симптом.
Какие дубли в WordPress встречаются чаще всего
Не все дубли одинаково опасны. Одни нужно закрыть от индексации, другие — склеить через canonical, третьи — убрать на уровне шаблона или настроек постоянных ссылок.
| Сценарий | Что делать | Компромисс |
|---|---|---|
| Одна запись доступна по нескольким URL | Настроить 301-редирект на основной адрес | Нужна проверка плагинов и сервера |
| Архивы меток и автора дублируют контент | Закрыть от индексации или оставить только нужные архивы | Часть страниц перестанет приносить трафик |
| Параметры в URL создают копии | Исключить параметры из индексации и ссылок | Не все параметры можно убрать без потери функциональности |
| Страницы вложений | Редиректить вложения на родительскую запись | Нужно проверить медиа-библиотеку и тему |
Пошаговое решение: от настройки до кода
1. Приведите сайт к одному базовому URL
Сначала убедитесь, что сайт открывается только в одной версии: https, с нужным вариантом домена и без лишних редирект-цепочек. Это базовая вещь, но именно она часто порождает дубли на уровне всего сайта.
Проверьте настройки в Настройки → Общие: адрес WordPress и адрес сайта должны совпадать с канонической версией домена. Если есть расхождение, исправьте его и проверьте редирект с HTTP на HTTPS и с неканонического хоста на основной.
2. Закройте от индексации ненужные архивы
Если у сайта нет редакционной задачи продвигать архивы авторов или меток, их лучше не оставлять как полноценные индексируемые страницы. Это особенно актуально для небольших сайтов, где архивы повторяют список записей почти без добавленной ценности.
В SEO-плагине обычно можно задать noindex для архивов меток, авторов, дат и форматов. Если плагина нет или вы хотите управлять этим точечно, можно добавить мета-тег в шаблон.
add_action('wp_head', function () {
if (is_tag() || is_author() || is_date() || is_post_type_archive('post')) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});Этот пример показан только как технический ориентир. На практике лучше не вешать такой код бездумно на все архивы: для некоторых сайтов архивы категорий и таксономий — важная точка входа из поиска.
3. Уберите дубли вложений и страниц вложений
Страницы вложений часто создают лишний индексируемый слой. Если у медиафайла нет самостоятельной ценности, логичнее редиректить его на родительскую запись или на сам файл, в зависимости от структуры сайта.
Для редиректа страниц вложений на родительскую запись можно использовать такой код в functions.php дочерней темы или в мини-плагине:
add_action('template_redirect', function () {
if (!is_attachment()) {
return;
}
$parent_id = wp_get_post_parent_id(get_queried_object_id());
if ($parent_id) {
wp_safe_redirect(get_permalink($parent_id), 301);
exit;
}
wp_safe_redirect(home_url('/'), 301);
exit;
});Это не универсальное решение для всех проектов. Если у вас медиа-файлы используются как отдельные посадочные страницы, редирект может быть лишним. Тогда лучше оставить страницу, но явно управлять canonical и индексированием.
4. Склейте параметры и служебные URL
Параметры вроде ?replytocom= или UTM-меток часто создают десятки копий одной страницы. Полностью запретить все параметры нельзя: часть из них нужна для аналитики или функциональности. Но можно убрать их из внутренних ссылок и не плодить новые версии.
Если проблема именно в комментариях, а не в аналитике, можно отключить replytocom на уровне WordPress:
add_action('template_redirect', function () {
if (isset($_GET['replytocom'])) {
$url = remove_query_arg('replytocom');
wp_safe_redirect($url, 301);
exit;
}
});Перед внедрением проверьте, не используется ли ответ на комментарий как часть пользовательского сценария на сайте. На большинстве проектов это безопасно, но лучше тестировать на staging.
5. Настройте canonical там, где редирект неуместен
Если у страницы есть несколько допустимых вариантов отображения, но вы не хотите редиректить пользователя, используйте canonical. Это полезно для фильтров, сортировок, некоторых архивов и страниц с параметрами, которые должны работать для посетителя, но не должны конкурировать в индексе.
WordPress и SEO-плагины обычно умеют ставить canonical автоматически. Если нужно переопределить его точечно, можно использовать фильтр wpseo_canonical в Yoast SEO или аналогичный механизм в другом плагине. Но сначала убедитесь, что проблема не решается проще — через настройки самого плагина.
Проверка результата после внедрения
После изменений важно не гадать, а проверить, что поисковик видит именно нужную версию страницы. Делайте это в три шага.
- Откройте страницу в браузере и убедитесь, что все неканонические варианты редиректят на основной URL.
- Посмотрите исходный код и проверьте тег
rel="canonical". - В Search Console отправьте проверку URL и посмотрите, какая версия выбрана как каноническая.
Если вы закрывали архивы от индексации, проверьте, что они действительно отдают noindex, а не просто скрыты в меню. Скрытие ссылки не убирает страницу из индекса.
Для быстрой локальной проверки можно использовать такой запрос:
curl -s https://example.com/category/news/ | grep -i robotsЕсли в ответе нет нужного мета-тега, ищите конфликт: тема может выводить собственный robots, а SEO-плагин — другой. В таком случае нужно оставить один источник управления, а не дублировать логику в двух местах.
Частые ошибки и как их исправить
Ставят noindex на всё подряд
Это самая частая ошибка. Закрывают архивы, категории, теги, пагинацию и даже сами записи, а потом удивляются падению видимости. Индексация должна быть управляемой, а не выключенной целиком. Оставляйте открытыми те типы страниц, которые реально дают трафик и не дублируют основной контент.
Меняют canonical, но не убирают внутренние ссылки на дубли
Если меню, хлебные крошки, блоки похожих записей или шаблон категории продолжают вести на неканонический URL, поисковик будет регулярно находить лишние варианты. Canonical помогает, но не заменяет чистую структуру ссылок.
Редиректят всё через 302 вместо 301
Временный редирект для постоянной чистки дублей — плохая идея. Для постоянных канонических замен нужен 301. Иначе поисковик может дольше держать старый URL в индексе и не передавать сигналы так, как ожидается.
Ломают архивы авторов на многопользовательском сайте
Если у вас редакция, архив автора может быть полезен. Не отключайте его только потому, что это «дубль». Сначала посмотрите, есть ли у архива уникальная ценность: биография, подборка материалов, экспертность. Если архив пустой или повторяет ленту без смысла, тогда его можно закрыть или переработать.
Что можно сделать для безопасности и производительности
Чистка дублей обычно даёт и технический бонус: меньше лишних запросов, меньше обхода мусорных URL и меньше путаницы в кэше. Но важно не перегнуть палку.
- не добавляйте редиректы в несколько слоёв через плагин, .htaccess и тему одновременно;
- проверяйте, не создаёт ли кэш отдельные версии страниц по параметрам;
- не закрывайте от индексации страницы, которые нужны для навигации и внутренней перелинковки;
- после изменений очищайте кэш страницы, объектный кэш и, если используется, CDN;
- вносите правки сначала на staging, особенно если сайт уже в индексе.
Если нужен более системный подход к чистке дублей, архивов и служебных элементов, можно посмотреть в сторону инструментов вроде Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но и в этом случае сначала проверьте, какие именно дубли у вас есть, а уже потом включайте автоматические настройки.
Мини-чек-лист перед публикацией изменений
- основной домен и HTTPS настроены без конфликтов;
- ненужные архивы закрыты или переработаны;
- страницы вложений либо редиректятся, либо осознанно оставлены;
- параметры URL не создают лишние индексируемые копии;
- canonical указывает на правильный адрес;
- Search Console показывает нужную каноническую версию;
- кэш очищен после правок.
Если после всех правок дубли всё ещё появляются, ищите источник не только в WordPress, но и в серверных правилах, CDN и сторонних плагинах. В таких случаях проблема часто не в одном «плохом» URL, а в конфликте нескольких слоёв генерации страниц.