Дубли страниц в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: архивы тегов, страницы пагинации, параметры в URL, версии с ?replytocom, дубли главной, а иногда и одинаковые записи в нескольких таксономиях. Для SEO это не абстрактная проблема: поисковик видит несколько URL с одним и тем же или почти одинаковым содержимым и сам выбирает, что индексировать. Иногда выбирает не то, что нужно.
Ниже разберём, как найти источник дублей, что именно закрывать от индексации, а что лучше объединять через canonical или редирект 301, и как проверить, что после правок сайт не начал терять нужные страницы из индекса.
Как понять, что у вас именно дубли, а не просто просадка трафика
Сначала стоит отличить дубль от похожих страниц. Если у вас одинаковые заголовки, но разные интенты, это не всегда проблема. А вот если один и тот же материал доступен по нескольким адресам, это уже технический дубль.
Типичные источники дублей в WordPress
- страницы с параметрами в URL:
?utm_,?replytocom, фильтры, сортировки; - архивы рубрик и тегов, где повторяется текст записи;
- страницы пагинации архивов;
- версии с и без слэша, http и https, www и без www;
- страницы автора и дата-архивы, если они дублируют контент записей;
- одна и та же запись в нескольких таксономиях с одинаковыми сниппетами.
Что смотреть в диагностике
Откройте в поиске Google Search Console отчёт по страницам и проверьте, какие URL помечены как дубли, Google выбрал другой канонический URL. Затем вручную сравните:
view-source:у проблемных URL — есть ли корректныйrel="canonical";- код ответа сервера — не отдаёт ли дубль 200 OK вместо редиректа;
- robots meta — не закрыта ли нужная страница случайно;
- одинаков ли контент на нескольких адресах.
Если дубль существует только из-за параметра в URL, чаще всего нужен либо canonical, либо запрет индексации параметрической версии. Если же это разные адреса одной и той же страницы без причины, правильнее ставить 301-редирект.
Что лучше: canonical, noindex или 301 редирект
Эти три инструмента решают разные задачи. Ошибка многих сайтов в том, что они пытаются закрыть всё через noindex. Это не всегда помогает, потому что страница остаётся доступной, а дублирование URL никуда не исчезает.
| Подход | Когда использовать | Плюс | Минус |
|---|---|---|---|
canonical | Похожие версии одной страницы, параметры, сортировки | Сигнализирует поисковику основную версию | Не убирает дубль физически |
noindex | Архивы, служебные страницы, которые не нужны в поиске | Прямо исключает из индекса | Страница остаётся в обходе робота |
| 301 redirect | Одинаковые URL, старые адреса, дубли протокола и домена | Объединяет вес и убирает дубль | Нужно аккуратно проверять цепочки редиректов |
Если у вас есть выбор, начинайте с редиректа там, где URL действительно должен быть один. canonical используйте для мягких дублей. noindex оставляйте для страниц, которые не должны попадать в выдачу вообще, но при этом должны быть доступны пользователю.
Пошаговое решение: как убрать дубли в WordPress
Шаг 1. Нормализуйте основной URL сайта
Проверьте, что сайт открывается в одном варианте: только HTTPS, только с нужным вариантом www или без него. Это базовый слой, без которого дальше всё будет расползаться.
Если у вас старый сайт с разными вариантами домена, настройте 301-редирект на уровне сервера или через wp-config.php не пытайтесь это лечить. WordPress должен работать уже на одном каноническом адресе.
Шаг 2. Закройте служебные архивы, если они не нужны
Если рубрики и теги не несут самостоятельной ценности, их лучше не индексировать. Для этого можно использовать SEO-плагин, но если нужен точечный контроль, проще добавить фильтр в тему или мини-плагин.
<?php
add_filter('wp_robots', function ($robots) {
if (is_tag() || is_author() || is_date()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});
Этот вариант не трогает записи и страницы. Он работает через стандартный фильтр wp_robots, который WordPress использует для формирования meta robots.
Шаг 3. Добавьте canonical для параметрических URL
Если у вас есть страницы с параметрами, но содержимое по сути то же самое, canonical должен указывать на чистый URL без параметров. Для этого можно использовать фильтр wp_get_canonical_url или более точечно переопределять canonical в SEO-плагине, если он уже установлен.
<?php
add_filter('wp_get_canonical_url', function ($canonical, $post) {
if (is_singular() && !empty($_GET)) {
return get_permalink($post);
}
return $canonical;
}, 10, 2);
Здесь логика простая: если открыта одиночная запись с параметрами, canonical указывает на чистую версию. Это не универсальное решение для всех сайтов, но для типовых UTM-меток и служебных параметров оно полезно.
Шаг 4. Уберите дубли через редирект там, где URL не должен существовать
Если у вас есть старые адреса, которые больше не нужны, не закрывайте их noindex. Делайте 301. Это особенно важно после смены структуры ссылок или переноса сайта.
<?php
add_action('template_redirect', function () {
if (isset($_GET['replytocom'])) {
$url = remove_query_arg('replytocom');
wp_safe_redirect($url, 301);
exit;
}
});
Такой редирект убирает частый дубль комментариев. Если у вас есть другие параметры, добавляйте их отдельно и не редиректите всё подряд без проверки — можно сломать фильтры, поиск и пагинацию.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой страницы в браузере. Нужно проверить именно технические сигналы.
- Откройте проблемный URL и убедитесь, что он отдаёт нужный код ответа: 200 для основной страницы, 301 для дубля.
- Посмотрите исходный код страницы и проверьте
rel="canonical". - Проверьте meta robots: нужные архивы должны быть
noindex,follow, а не случайноnoindex,nofollow. - В Search Console отправьте URL на повторную проверку и отслеживайте, как меняется статус канонической страницы.
- Сравните количество страниц с параметрами в индексе до и после, но не ждите мгновенного обновления.
Для быстрой ручной проверки удобно использовать curl:
curl -I https://example.com/post-name/?replytocom=12
В ответе должен быть 301 и новый Location без параметра. Если вместо этого приходит 200, редирект не сработал.
Частые ошибки и как их исправить
Ставят noindex на всё подряд
Это частая ошибка при попытке «почистить индекс». В результате из поиска исчезают полезные рубрики, страницы авторов или даже записи, если фильтр написан слишком широко. Проверяйте условия: is_tag() и is_author() — это не is_singular().
Canonical указывает на несуществующий или редиректящий URL
Если canonical ведёт на адрес с 301 или 404, поисковик может проигнорировать его. Канонический URL должен быть живым, конечным и без цепочки редиректов.
Редирект создаёт петлю
Так бывает, когда правило написано без учёта уже существующих редиректов на сервере или в плагине. Если после правки страница начинает бесконечно перекидывать сама на себя, отключайте новое правило и проверяйте порядок обработки.
Параметры удаляют без разбора
Не все query string одинаково вредны. UTM-метки обычно не нужны в canonical, но параметры поиска, фильтрации или сортировки могут быть важны для пользователя. Их нельзя просто вырезать глобальным правилом.
Практические советы по безопасности и производительности
Если вы решаете проблему дублей кодом, держите изменения в мини-плагине или в дочерней теме, а не в основной теме. Так проще откатить правку и не потерять её при обновлении.
Ещё один полезный момент: не плодите несколько SEO-решений одновременно. Если у вас уже стоит плагин, который управляет canonical и robots, сначала проверьте его настройки. Два источника meta robots на одной странице — это источник конфликтов, а не оптимизации.
Для сайтов с большим количеством архивов и дублей имеет смысл периодически проверять:
- страницы с параметрами в индексе;
- архивы тегов с пустым или почти одинаковым контентом;
- дубли главной из-за неправильной настройки домена;
- старые URL после миграции структуры ссылок.
Если нужен более широкий набор инструментов для чистки дублей, служебных архивов и технических настроек, можно посмотреть в сторону плагинов класса Clearfy Pro, но даже в этом случае сначала стоит понять, что именно вы закрываете и зачем. Автоматическая чистка без диагностики часто даёт обратный эффект.
Когда всё настроено правильно, у вас остаётся один основной URL для каждой важной страницы, служебные разделы не мешают индексации, а поисковик получает понятный сигнал, какую версию считать основной.