Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: архивы тегов, страницы авторов, пагинация, параметры в URL, версии с и без слеша, HTTP и HTTPS, www и без www. Если это не привести в порядок, поисковик начинает индексировать лишние адреса, а вес страниц размазывается по копиям.
Ниже — рабочая схема: как сначала понять, какие именно дубли у вас есть, потом выбрать способ закрытия и в конце проверить результат без гадания по логам.
Какие дубли реально встречаются в WordPress
Не все дубли одинаково вредны. Одни нужно закрывать от индексации, другие — склеивать через canonical, третьи лучше вообще убрать на уровне шаблона или настроек. Ошибка многих сайтов в том, что всё подряд отправляют в noindex или, наоборот, пытаются лечить только robots.txt.
Типовые источники дублей
- архивы тегов и рубрик, которые дублируют подборки материалов;
- страницы автора на небольшом сайте, где один автор и отдельная архивная страница не нужна;
- страницы пагинации архивов;
- URL с параметрами сортировки, фильтрации, UTM и служебными query string;
- версии сайта с
wwwи безwww; - HTTP и HTTPS, если редиректы настроены не до конца;
- страницы поиска по сайту, если они попадают в индекс;
- медиа-страницы вложений WordPress, которые часто создают пустые адреса.
Диагностика проблемы: что смотреть в первую очередь
Сначала нужно понять, где именно появляются копии. Не начинайте с правки robots.txt, пока не увидели список проблемных URL. Иначе можно случайно закрыть важные страницы и не решить исходную задачу.
Проверка в поисковой выдаче и в панели вебмастера
Откройте отчёты по страницам в индексе и посмотрите, какие типы URL там повторяются. Если в индексе есть и основная страница, и её варианты с параметрами, это уже сигнал. Отдельно проверьте:
- одинаковый ли title и description у разных URL;
- есть ли у копий одинаковый контент;
- какой адрес поисковик считает основной;
- не индексируются ли страницы с параметрами
?replytocom=,?amp,?utm_и похожими хвостами.
Быстрая проверка через сайт и сервер
Если есть доступ к консоли, удобно посмотреть заголовки ответа и редиректы. Это помогает понять, где проблема: в шаблоне, в плагине или на уровне сервера.
curl -I https://example.com/page/curl -I https://example.com/page?utm_source=testСмотрите на три вещи: код ответа, наличие редиректа и конечный URL. Если одна и та же страница отдаётся по нескольким адресам без 301-редиректа, это уже источник дублей.
Как выбрать способ: robots.txt, noindex или canonical
У этих инструментов разная задача. Их нельзя подменять друг другом.
| Способ | Когда использовать | Плюс | Ограничение |
|---|---|---|---|
robots.txt | Для служебных разделов, которые не должны обходиться роботом | Снижает нагрузку на обход | Не убирает URL из индекса, если он уже известен поисковику |
noindex | Для страниц, которые могут быть доступны пользователю, но не нужны в поиске | Прямо запрещает индексацию | Страница должна быть доступна для обхода, иначе робот не увидит мета-тег |
canonical | Для дублей, у которых есть основная версия | Помогает склеить сигналы | Не подходит для полностью бесполезных страниц |
Практически это выглядит так: служебные и мусорные URL закрывают через noindex или robots.txt, а похожие страницы с полезным содержимым — через canonical на основную версию.
Пошаговое решение для WordPress
Шаг 1. Уберите технические дубли на уровне редиректов
Если сайт доступен по нескольким вариантам домена или протокола, сначала настройте 301-редирект на одну каноническую версию. Это базовая вещь, но именно она часто ломается после миграции или смены хостинга.
Проверка простая: любой вариант URL должен вести на один и тот же адрес без цепочек редиректов.
# пример для Nginx: редирект на HTTPS и без wwwserver {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}Если у вас Apache, логика та же: один главный хост, один протокол, один формат URL. Важно не делать несколько редиректов подряд, иначе теряется скорость и растёт шанс на ошибки.
Шаг 2. Закройте лишние архивы и служебные страницы
Для большинства контентных сайтов не нужны в индексе:
- архивы авторов, если автор один;
- страницы поиска;
- медиа-вложения как отдельные страницы;
- служебные страницы с параметрами сортировки и фильтрации;
- пустые или почти пустые теги.
Если вы используете SEO-плагин, проверьте его настройки архивов. Но не полагайтесь только на интерфейс: иногда шаблон темы или другой плагин всё равно выводит дубль.
Шаг 3. Добавьте noindex там, где страница должна открываться, но не индексироваться
Для страниц поиска, некоторых архивов и страниц с параметрами лучше использовать noindex, follow. Тогда пользователь сможет открыть страницу, а поисковик не будет держать её в индексе.
Если нужно сделать это кодом, можно добавить мета-тег в wp_head для конкретных шаблонов:
add_action('wp_head', function () {
if (is_search() || is_author() || is_attachment()) {
echo "<meta name=\"robots\" content=\"noindex,follow\" />\n";
}
});Это рабочий вариант, если вы понимаете, какие типы страниц закрываете. Но если сайт большой, лучше сначала проверить логику на тестовой среде, чтобы не закрыть лишнее.
Шаг 4. Настройте canonical для похожих URL
Если у страницы есть копии с параметрами, canonical должен указывать на чистый адрес без параметров. Для WordPress это особенно важно на страницах с фильтрами, пагинацией и UTM-метками.
add_filter('wpseo_canonical', function ($canonical) {
if (!empty($_GET)) {
return remove_query_arg(array_keys($_GET), home_url(add_query_arg(array(), $GLOBALS['wp']->request)));
}
return $canonical;
});Этот пример показан только как идея. На практике лучше не строить canonical вручную без необходимости, а использовать штатную логику SEO-плагина или шаблона. Если canonical начинает указывать на неправильный адрес, проблема станет хуже, чем исходный дубль.
Шаг 5. Уберите мусорные URL из генерации
Иногда правильнее не закрывать дубль, а вообще не создавать его. Например, можно отключить вывод архивов тегов, если они не несут ценности, или убрать страницы вложений, если они не нужны.
Для медиа-страниц часто помогает редирект вложений на сам файл или на родительскую запись. Это уменьшает количество пустых страниц в индексе и упрощает структуру сайта.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой. Нужно убедиться, что поисковик видит нужные сигналы.
- основной URL отдаёт 200 OK;
- дубли с www/без www и HTTP/HTTPS редиректятся на одну версию;
- страницы с параметрами либо закрыты от индексации, либо имеют canonical на чистый URL;
- в исходном коде есть нужный
meta robotsили canonical; - в
robots.txtнет случайного запрета на важные разделы; - в панели вебмастера уменьшается число страниц с параметрами и служебных дублей.
Полезно проверить и вручную:
curl -I https://example.com/?utm_source=testcurl https://example.com/page/ | grep -i canonicalЕсли canonical на странице есть, но указывает не туда, ищите конфликт между темой, SEO-плагином и кастомным кодом. Часто это происходит после установки нескольких плагинов, которые одновременно пытаются управлять мета-тегами.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt и ждёте, что она исчезнет из индекса
Это частая ошибка. robots.txt ограничивает обход, но не гарантирует удаление уже известного URL. Если страница уже в индексе, нужен другой механизм: noindex, редирект или удаление контента.
Ставят noindex на страницу, которую робот не может обойти
Если URL закрыт в robots.txt, поисковик может не увидеть мета-тег noindex. В итоге страница остаётся в индексе дольше, чем ожидалось. Для удаления из поиска сначала дайте роботу доступ, потом ставьте noindex.
Canonical указывает на несуществующую или нерелевантную страницу
Такое бывает после переноса сайта или массовой правки URL. Проверяйте, что canonical ведёт на живую, индексируемую и действительно основную версию.
Плагин и тема одновременно меняют мета-теги
Если SEO-плагин уже выводит canonical и robots, а в теме добавлен свой код, вы получите дубли мета-тегов. Это нужно исправлять в одном месте: либо в плагине, либо в теме, но не в обоих сразу.
Закрыли слишком много архивов и потеряли внутреннюю перелинковку
Если вы убрали из индекса все архивы, проверьте, не исчезли ли полезные страницы навигации. Иногда лучше оставить индексируемыми рубрики, но закрыть теги и авторов. Решение зависит от структуры сайта, а не от универсального рецепта.
Что делать для безопасности и производительности
Техническая чистка дублей почти всегда даёт побочный плюс: меньше лишних обходов, меньше мусора в индексе, проще поддерживать сайт. Но есть и обратная сторона: любое массовое изменение мета-тегов и редиректов нужно вносить аккуратно.
- сначала проверьте изменения на staging-копии;
- не закрывайте важные разделы через
robots.txtбез теста; - после правок очистите кеш страницы и, если есть, серверный кеш;
- не ставьте несколько SEO-плагинов одновременно;
- если используете кастомный код, храните его в дочерней теме или в отдельном мини-плагине.
Если нужен более системный подход к чистке дублей и технических хвостов, в экосистеме WordPress часто используют Clearfy Pro: он закрывает часть типовых задач по SEO и уборке лишнего кода. Но даже с плагином всё равно полезно понимать, что именно вы закрываете и почему.
Мини-чек-лист перед публикацией изменений
- Выбрана одна каноническая версия домена.
- Проверены редиректы с HTTP, www и без www.
- Определены страницы, которые должны быть в индексе, а какие нет.
- Для дублей выбран правильный инструмент: redirect, noindex или canonical.
- Проверен исходный код страницы после правок.
- Сделана повторная проверка в панели вебмастера через несколько дней после индексации.
Если после правок в индексе всё ещё остаются старые URL, не спешите менять стратегию. Сначала проверьте, не мешает ли кеш, не осталось ли старых ссылок внутри сайта и не создаёт ли дубль другой плагин или шаблон.