После обновления темы или плагина WordPress нередко начинает отдавать лишние версии одних и тех же страниц: с параметрами в URL, с пагинацией, с архивами тегов, с дублями в хлебных крошках или с отдельными шаблонами для AMP/мобильной версии. Визуально сайт может выглядеть нормально, но поисковик уже видит несколько адресов с одинаковым или почти одинаковым контентом. Это не абстрактная SEO-проблема, а типичный технический сбой после обновления.
Ниже разберём, как быстро найти источник дублей, что можно исправить кодом, а что лучше закрыть настройками индексации. Без лишней теории — только рабочие сценарии.
Как понять, что на сайте появились дубли
Первый сигнал — в Search Console растёт число проиндексированных страниц, хотя новых материалов вы не добавляли. Второй — в отчётах по сканированию появляются URL с параметрами, например ?replytocom=, ?amp, ?utm_, ?page= или версии архивов, которые не должны конкурировать с основными страницами. Третий — одна и та же статья открывается по нескольким адресам: со слэшем и без, с www и без, через категории и напрямую.
Что проверить в первую очередь
- Откройте страницу в браузере и посмотрите итоговый URL после всех редиректов.
- Проверьте исходный код на наличие canonical: он должен указывать на один основной адрес.
- Сравните заголовки ответа сервера для разных версий URL.
- Посмотрите, не появились ли новые архивы после обновления темы: авторы, метки, форматы, таксономии.
- Проверьте, не генерирует ли плагин дополнительные параметры в ссылках на внутренние страницы.
Если у вас есть доступ к серверу, быстрое сравнение можно сделать через curl:
curl -I https://example.com/sample-post/
curl -I https://example.com/sample-post/?amp
curl -I https://example.com/sample-post/?replytocom=1Смотрите на код ответа, Location при редиректе и наличие rel="canonical" в HTML. Если разные версии отдают 200 OK и не сводятся к одному адресу, это уже повод разбираться.
Откуда берутся дубли после обновления темы или плагина
Чаще всего проблема не в самом WordPress, а в том, что обновлённая тема или плагин начали по-другому строить ссылки и шаблоны. Например, тема добавила отдельные архивы для блоков, плагин комментариев начал генерировать ?replytocom, а SEO-плагин перестал корректно выставлять canonical для части типов записей.
| Источник дубля | Как выглядит | Что делать |
|---|---|---|
| Параметры в URL | ?replytocom=, ?amp, UTM | Закрыть от индексации, настроить canonical, убрать генерацию лишних ссылок |
| Архивы таксономий | метки, форматы, служебные рубрики | Оставить только полезные архивы, остальное закрыть или удалить из карты сайта |
| Дубли главной | страница блога, главная, пагинация | Проверить шаблон и настройки чтения, свести к одному основному URL |
| Старый плагин SEO | неправильный canonical, лишние meta robots | Обновить или заменить, проверить конфликт с темой |
Если после обновления темы появились новые архивы или шаблоны, не спешите сразу всё закрывать noindex. Сначала нужно понять, есть ли у этих страниц реальная ценность. Иногда достаточно убрать их из меню, карты сайта и внутренних ссылок. Иногда — закрыть от индексации полностью.
Пошаговое решение: как убрать дубли без поломки сайта
1. Найдите источник генерации лишнего URL
Откройте проблемную страницу и проверьте, откуда на неё ведут ссылки. Если дубли идут из темы, ищите в шаблонах header.php, single.php, archive.php, functions.php или в файлах блока навигации. Если ссылки добавляет плагин, временно отключите его на тестовой копии и сравните поведение.
Полезно проверить, не меняет ли тема canonical вручную. В хорошей теме этого делать не нужно, если SEO-плагин уже управляет canonical. Два конкурирующих canonical — частая причина путаницы.
2. Сведите канонический адрес к одному варианту
Если WordPress отдаёт несколько версий одной страницы, сначала убедитесь, что основной адрес выбран на уровне настроек сайта: Настройки > Общие. Там должны быть единые WordPress Address и Site Address. Дальше проверьте редиректы на уровне сервера и плагинов.
Если нужно принудительно убрать параметр replytocom из индексации и ссылок, можно использовать фильтр:
add_filter( 'comment_reply_link', function( $link ) {
return preg_replace( '/([?&])replytocom=\d+/i', '', $link );
} );Но это не универсальное решение для всех случаев. Если параметр уже попадает в индекс, лучше дополнительно закрыть его через robots.txt или правила индексации в SEO-плагине, а затем дождаться переобхода.
3. Уберите из индекса служебные архивы и параметры
Архивы меток, дат, авторов, форматов и служебных таксономий часто создают тонны слабых страниц. После обновления темы они могут начать активнее перелинковываться и вытеснять полезные материалы. Если архив не нужен пользователю, его лучше не индексировать и не включать в sitemap.
Для таксономий и архивов удобнее использовать SEO-плагин или настройки темы, а не писать собственную логику для каждого случая. Если у вас уже стоит плагин вроде Clearfy Pro, в нём можно централизованно отключить лишние архивы, убрать дубли и почистить технические страницы. Это особенно полезно после обновления старой темы, где часть SEO-логики уже устарела.
4. Проверьте пагинацию и страницы блога
После обновления шаблона часто ломается логика пагинации: главная и страница блога начинают дублировать друг друга, а /page/2/ получает тот же title и description, что и первая страница. Это не всегда критично, но для индексации лучше, чтобы каждая страница пагинации имела собственный canonical и не конкурировала с основной.
Если у вас кастомный шаблон, проверьте, не выводится ли один и тот же список записей и на главной, и на отдельной странице блога. Это типичная ошибка при переносе старой темы на новый дизайн.
Пример: как закрыть служебные параметры через functions.php
Если плагин или тема упорно генерируют ссылки с параметрами, можно добавить редирект на чистый URL. Делать это стоит аккуратно и только для конкретных параметров, а не для всех подряд.
add_action( 'template_redirect', function() {
if ( is_admin() ) {
return;
}
$remove_params = array( 'replytocom', 'amp' );
$current_url = home_url( add_query_arg( array(), $GLOBALS['wp']->request ) );
foreach ( $remove_params as $param ) {
if ( isset( $_GET[ $param ] ) ) {
wp_safe_redirect( remove_query_arg( $param ), 301 );
exit;
}
}
} );Этот пример не стоит копировать без проверки на тестовом сайте. Если у вас AMP-страницы реально используются, параметр amp нельзя просто вырезать. Сначала убедитесь, что он не нужен для текущей схемы публикации.
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. После правок откройте несколько вариантов одного URL и убедитесь, что:
- основной адрес отдаёт 200 OK;
- лишние варианты получают 301 на канонический URL или закрыты от индексации;
- в HTML указан один canonical;
- страница не попадает в sitemap, если она служебная;
- внутренние ссылки ведут только на чистый адрес.
Для быстрой проверки можно использовать такой набор команд:
curl -I https://example.com/sample-post/
curl -I https://example.com/sample-post/?replytocom=1
curl -I https://example.com/sample-post/?ampЕсли редиректов нет, а лишний URL отдаёт 200 OK, значит проблема не решена. Если редирект есть, но canonical всё равно указывает на параметризованную версию, значит конфликтует тема или SEO-плагин.
Частые ошибки и как их исправить
Закрыли всё noindex, но дубли остались
Noindex не убирает URL из обхода сразу. Если на страницу продолжают вести внутренние ссылки, поисковик будет её регулярно сканировать. Нужно либо убрать ссылки, либо настроить 301 на канонический адрес, либо исключить страницу из генерации.
Поставили два SEO-плагина одновременно
Это частая причина, когда после обновления сайта canonical, title и robots начинают конфликтовать. Оставьте один плагин, который управляет метаданными, и проверьте, не дублирует ли тема его функции.
Сломали пагинацию редиректом
Если вы слишком агрессивно режете параметры и страницы /page/2/, можно потерять доступ к архивам и ухудшить внутреннюю перелинковку. Пагинацию нужно тестировать отдельно, особенно на больших блогах.
Удалили архивы, но забыли про старые ссылки
Если архивы были в меню, хлебных крошках или блоках рекомендаций, после их удаления появятся битые ссылки. Сначала уберите ссылки из шаблонов и только потом отключайте сам архив.
Что делать с обновлённой темой, если она снова создаёт дубли
Если после обновления проблемы возвращаются, не лечите симптом в одном месте. Проверьте, не добавляет ли новая версия темы:
- дополнительные шаблоны архивов;
- дублирующие блоки хлебных крошек;
- ссылки на служебные таксономии;
- собственный вывод title и meta description;
- нестандартную пагинацию или фильтры в URL.
В таких случаях проще один раз зафиксировать технические правила в дочерней теме или в небольшом MU-плагине, чем каждый раз править обновления вручную. Это безопаснее, чем вносить изменения прямо в файлы темы, которые будут перезаписаны при следующем апдейте.
Практика безопасности и производительности
Чем больше дублей, тем больше лишнего обхода и тем выше нагрузка на сервер. Это особенно заметно на сайтах с большим архивом записей и активными комментариями. Поэтому после обновления темы полезно не только убрать дубли, но и сократить число служебных страниц, которые вообще доступны для сканирования.
Если у вас много старых решений в теме, имеет смысл проверить, не тянет ли она за собой устаревшие SEO-обвязки. Иногда дешевле и надёжнее заменить набор разрозненных функций на один аккуратный плагин для технической чистки, чем поддерживать самописный код. Но если вы уже используете сторонний инструмент, не включайте в нём всё подряд: отключайте только то, что действительно создаёт дубли или мусор в индексе.
После правок не забывайте очистить кеш страницы, объектный кеш и CDN, если он есть. Иначе вы будете проверять уже старую версию шаблона и ошибочно думать, что проблема не ушла.