После редизайна WordPress-сайта часто всплывает неприятный эффект: в индекс попадают дубли страниц. Обычно это не «новая проблема SEO», а следствие технических изменений — появились версии с параметрами, изменилась пагинация, шаблон начал отдавать одинаковый контент по разным URL, а canonical остался старым или вообще исчез. Если не разбирать источник, можно долго лечить симптомы вместо причины.
Ниже — рабочая схема для разработчика: как быстро диагностировать дубли, что именно править в теме или плагинах, как закрыть лишние URL без поломки индексации и как проверить, что поисковик видит нужную версию страницы.
Когда проблема действительно в дублях, а не в «плохой индексации»
Сначала стоит убедиться, что речь именно о дублях. В WordPress это обычно один из нескольких сценариев:
- одна и та же запись открывается по нескольким адресам из-за параметров
?amp,?replytocom, UTM-меток или сортировок; - категории, теги и архивы выводят одинаковые фрагменты контента без явной ценности;
- страницы пагинации дублируют первую страницу раздела;
- шаблон темы начал выводить одинаковый
<title>,meta descriptionили canonical для разных URL; - после миграции остались старые адреса, которые отдают 200 OK вместо 301 или 404.
Если в индексе много одинаковых страниц, но на сайте они реально существуют и нужны пользователю, это не всегда ошибка. Проблема начинается там, где поисковик выбирает не ту версию, а вы теряете контроль над каноническим URL.
Диагностика: где искать источник дублей
Проверку лучше начинать не с robots.txt, а с ответа сервера и HTML-меток. Это быстрее показывает, что именно сломано.
1. Сравните адреса, которые отдают одинаковый контент
Возьмите 3–5 URL одной и той же страницы: с параметром, без параметра, с www и без, со слешем и без, из архива и из поиска по сайту. Сравните заголовки ответа и canonical.
curl -I https://example.com/post-name/
curl -I 'https://example.com/post-name/?utm_source=test'
Если оба адреса отдают 200 OK, а canonical указывает на один и тот же URL, это уже повод проверить, не нужно ли лишний адрес закрыть редиректом или убрать его генерацию.
2. Посмотрите canonical и robots в исходном коде
Откройте страницу и проверьте, что в <head> есть ровно один canonical и он ведёт на нужную версию. Для WordPress это особенно важно после вмешательства в тему или SEO-плагин.
<link rel="canonical" href="https://example.com/post-name/" />
<meta name="robots" content="index, follow" />
Если canonical отсутствует, дубли почти всегда начинают расти быстрее. Если он есть, но указывает на неправильный адрес, сначала исправляйте источник генерации, а не пытайтесь «додавить» поисковик через дополнительные настройки.
3. Проверьте шаблоны архивов и пагинацию
Отдельно посмотрите категории, теги, авторские архивы и страницы пагинации. Частая ошибка — страница 2, 3 и дальше отдают тот же заголовок и описание, что и первая страница, а контент почти не отличается. Для поисковика это явный сигнал на дублирование.
Если у вас кастомная тема, проверьте, не переопределены ли шаблоны archive.php, category.php, tag.php и не сломана ли логика wp_head(). Именно там часто теряется canonical и мета-данные.
Пошаговое решение: что править в WordPress
Лучше идти от источника к следствию: сначала убрать генерацию лишних URL, потом настроить редиректы и только затем отправлять поисковику сигнал об изменениях.
Шаг 1. Уберите генерацию мусорных параметров
Если на сайте есть ссылки с параметрами, которые не должны индексироваться, не полагайтесь только на robots.txt. Поисковик может увидеть их в ссылках и продолжить обход. Надёжнее не генерировать такие URL в шаблонах и не оставлять их в навигации.
Например, если тема или плагин добавляют лишние параметры к внутренним ссылкам, их можно отфильтровать:
add_filter('the_permalink', function ($permalink) {
return remove_query_arg(array('utm_source', 'utm_medium', 'utm_campaign'), $permalink);
});
Это не универсальное решение для всех случаев, но для внутренних ссылок и шаблонных вставок оно помогает убрать источник дублей на уровне генерации.
Шаг 2. Настройте 301 для старых и альтернативных адресов
Если у страницы есть устаревшие варианты URL, они должны вести на канонический адрес через 301. Не оставляйте одинаковый контент на двух адресах с кодом 200 — это почти всегда создаёт путаницу в индексе.
Для точечных правил в .htaccess или конфигурации nginx используйте редирект на один вариант URL. Если нужен пример на уровне WordPress, можно добавить простую проверку в template_redirect:
add_action('template_redirect', function () {
if (is_singular() && isset($_GET['replytocom'])) {
wp_safe_redirect(get_permalink(), 301);
exit;
}
});
Такой подход уместен только для конкретной проблемы. Если дублей много и они системные, лучше решать их на уровне сервера или SEO-плагина.
Шаг 3. Исправьте canonical в теме или SEO-плагине
Если canonical формируется неправильно, проверьте, не выводит ли тема собственный тег link rel="canonical" поверх SEO-плагина. Два canonical в одном документе — частая ошибка после кастомизации.
В теме canonical лучше не дублировать вручную, если его уже генерирует SEO-плагин. Если же плагина нет, используйте стандартный WordPress-функционал аккуратно и без самодельных «SEO-комбайнов».
Шаг 4. Закройте неценные архивы и служебные страницы
Теги, авторские архивы без уникальной ценности, внутренний поиск и служебные страницы часто создают шум. Их можно оставить доступными для пользователей, но убрать из индекса через noindex или отключить вывод в sitemap — в зависимости от задачи.
Если вы используете плагин для SEO и чистки дублей, например Clearfy Pro, проверьте, что он не конфликтует с вашей темой и не переопределяет canonical второй раз. Для таких задач полезно смотреть не на список функций, а на итоговый HTML и HTTP-ответ.
| Подход | Когда подходит | Минус |
|---|---|---|
| Плагин SEO/чистки | Типовые дубли, архивы, мета-правила | Риск конфликтов с темой и другими плагинами |
| Код в теме/плагине | Точечные URL, параметры, редиректы | Нужна аккуратная поддержка при обновлениях |
| Серверный редирект | Старые адреса, www/без www, слеши | Требует доступа к конфигу и тестирования |
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой. Нужны три уровня контроля: HTML, HTTP и поведение в поиске.
- Проверьте, что у канонической страницы один canonical и он совпадает с основным URL.
- Убедитесь, что старые варианты адресов отвечают 301, а не 200.
- Посмотрите, исчезли ли дубли из sitemap и внутренних ссылок.
- Проверьте страницу в Google Search Console или другом инструменте для вебмастеров: какой URL выбран каноническим.
- Сравните исходный код до и после релиза, если меняли тему или шаблоны.
Для быстрой проверки удобно использовать curl и поиск по исходнику:
curl -s https://example.com/post-name/ | grep -i canonical
curl -I https://example.com/old-post-name/
Если canonical на месте, а старый адрес отдаёт 301, базовый технический слой уже в порядке. Дальше остаётся дождаться переобхода и проверить, не тянет ли дубли какой-то отдельный шаблон или плагин.
Частые ошибки и как их исправить
Два canonical в одном документе
Обычно это происходит, когда SEO-плагин уже выводит canonical, а разработчик добавляет ещё один в header.php. Решение простое: оставьте только один источник.
Редирект на главную вместо канонической страницы
Такое часто появляется после массовой чистки URL. Если старый адрес не существует, он должен вести либо на релевантную новую страницу, либо отдавать 404/410. Редирект на главную выглядит как попытка скрыть проблему и создаёт плохой пользовательский сигнал.
Закрыли URL в robots.txt, но дубли остались в индексе
robots.txt не удаляет уже известные поисковику адреса. Если URL уже в индексе, нужен либо 301, либо 404/410, либо явный сигнал через canonical/noindex в зависимости от сценария.
Пагинация закрыта слишком агрессивно
Если вы поставили noindex на все страницы пагинации без анализа, можно потерять полезные входные страницы. Сначала проверьте, есть ли у них трафик и поисковая ценность. Иногда достаточно исправить заголовки и canonical, а не прятать весь архив.
Безопасность и производительность: что не стоит делать
Не добавляйте тяжёлую логику в каждый запрос фронтенда ради SEO-правил. Если вы фильтруете URL, проверяете параметры и делаете редиректы, держите код коротким и предсказуемым. Избыточные проверки в template_redirect могут замедлить сайт, особенно на больших архивах.
Если используете плагины для чистки дублей, обновляйте их вместе с темой и проверяйте HTML после каждого обновления. Конфликт между темой и SEO-плагином часто проявляется не сразу, а после очередного релиза.
Для крупных сайтов полезно вести список правил: какие параметры разрешены, какие URL редиректятся, какие архивы закрыты от индекса. Это экономит время при следующем редизайне и помогает не возвращать дубли обратно случайной правкой шаблона.