Если в индексе всплывают не те страницы, обычно проблема не в «плохом SEO», а в том, что WordPress отдаёт поисковику несколько версий одного и того же контента: архивы автора, вложения, страницы с параметрами, старые URL после редизайна, пагинацию, служебные таксономии. В результате поисковик тратит обход на мусор, а нужная страница конкурирует сама с собой.
Ниже — рабочий сценарий: как найти источник дублей, что закрывать через настройки, что лучше править кодом и как проверить, что после правок индекс действительно стал чище.
Диагностика: откуда берутся дубли
Перед правками нужно понять, какой именно тип дубля у вас есть. В WordPress чаще всего встречаются такие случаи:
- архивы автора на блоге с одним редактором;
- страницы вложений с отдельным URL для каждого изображения;
- параметры сортировки, фильтров и UTM, которые создают новые адреса;
- страницы пагинации архивов;
- старые URL после смены структуры постоянных ссылок;
- дубли из-за тегов, рубрик и пользовательских таксономий с одинаковым содержимым.
Самый быстрый способ диагностики — посмотреть, какие URL уже попали в индекс и чем они отличаются от основной страницы. Для этого используйте поиск по сайту в Google и отчёт «Страницы» в Search Console. Если видите, что в выдаче есть /attachment/, ?replytocom=, ?utm_ или старые адреса, значит проблема уже не теоретическая.
Что проверить в первую очередь
- Есть ли у сайта отдельная страница автора, если автор один.
- Открываются ли URL вложений как полноценные страницы.
- Не индексируются ли архивы тегов, если они пустые или дублируют рубрики.
- Не создаёт ли тема или плагин дополнительные параметры в URL.
- Есть ли 301-редиректы со старых адресов на новые.
Пошаговое решение: что закрывать и чем
Не все дубли нужно решать одинаково. Иногда достаточно настроек SEO-плагина, иногда нужен код в теме или мини-плагине. Ниже — практичная схема без лишних движений.
| Сценарий | Что делать | Компромисс |
|---|---|---|
| Архив автора на сайте с одним автором | Закрыть от индексации или убрать из sitemap | Потеря отдельной страницы автора, но это обычно не критично |
| Страницы вложений | Редиректить на файл или на родительскую запись | Нужно аккуратно проверить медиа-библиотеку |
| Параметры сортировки и фильтров | Не индексировать, при необходимости ставить canonical | Некоторые URL останутся доступными для пользователей |
| Старые URL после смены структуры | Сделать 301-редиректы | Нужно поддерживать карту редиректов |
1. Закройте служебные архивы в SEO-плагине
Если у вас стоит SEO-плагин, используйте его настройки для архивов автора, тегов и форматов записей. Это безопаснее, чем править шаблоны вручную, потому что плагин обычно сам убирает такие страницы из sitemap и ставит корректные мета-теги.
Если на сайте один автор, архив автора почти всегда лишний. Для блога или корпоративного сайта это типичный источник дубля: контент тот же, а ценности для поиска мало.
2. Перенаправьте страницы вложений
У вложений в WordPress есть отдельные URL, и они часто индексируются как пустые страницы. Если тема не использует attachment-страницы осознанно, лучше сделать редирект на сам файл или на родительскую запись.
Ниже пример для functions.php или, лучше, для небольшого mu-plugin:
<?php
add_action('template_redirect', function () {
if (is_attachment()) {
$post = get_post();
if ($post && $post->post_parent) {
wp_redirect(get_permalink($post->post_parent), 301);
exit;
}
$file = wp_get_attachment_url(get_queried_object_id());
if ($file) {
wp_redirect($file, 301);
exit;
}
}
});Логика простая: если у вложения есть родительская запись, отправляем пользователя туда. Если родителя нет, можно редиректить на сам файл. Это не идеальный универсальный вариант, но для большинства сайтов он решает проблему без побочных эффектов.
3. Уберите индексацию параметров URL
Параметры вроде ?replytocom=, ?sort=, ?filter= и UTM не должны создавать отдельные индексируемые страницы. Для UTM обычно достаточно canonical на чистый URL, а для внутренних фильтров — либо noindex, либо вообще запрет на генерацию таких адресов в индексации.
Если параметр создаёт отдельный контент, но не должен ранжироваться, можно добавить canonical вручную. Пример для конкретного параметра:
<?php
add_action('wp_head', function () {
if (isset($_GET['sort']) && is_singular()) {
echo '<link rel="canonical" href="' . esc_url(get_permalink()) . '" />' . "\n";
}
}, 1);Это не замена нормальной настройке SEO-плагина, но полезно, если параметр создаёт дубли на отдельных шаблонах и плагин не умеет их обработать.
4. Настройте 301-редиректы для старых адресов
После смены структуры ссылок старые URL не должны отдавать 200 OK. Если они продолжают открываться, поисковик может держать в индексе и старую, и новую версию. Для точечных редиректов лучше использовать серверную конфигурацию или плагин редиректов, а не «костыли» в шаблоне.
Пример для functions.php подходит только для небольшого количества старых адресов:
<?php
add_action('template_redirect', function () {
if (is_page('old-about')) {
wp_redirect(home_url('/about/'), 301);
exit;
}
});Если редиректов много, удобнее вести их в отдельном инструменте или на уровне сервера. В коде темы такие правила быстро превращаются в неуправляемый список.
Когда лучше использовать плагин, а когда код
Для типового сайта с блогом или корпоративными страницами проще опереться на SEO-плагин и не трогать шаблоны. Код нужен там, где есть нестандартная логика: особые параметры, кастомные типы записей, старые URL после миграции, специфические архивы.
Если нужен инструмент для чистки дублей и служебных страниц, уместно смотреть в сторону Clearfy Pro: он закрывает часть типовых технических задач без ручного вмешательства в тему. Но даже с плагином полезно понимать, какие именно URL вы убираете и почему.
Практическое правило такое: если настройка повторяется на многих сайтах и не зависит от дизайна — берите плагин. Если проблема завязана на конкретную логику темы или плагина — правьте кодом и фиксируйте это в репозитории.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой в браузере. Нужно убедиться, что URL действительно ведут себя так, как вы задумали.
- Откройте старый URL и проверьте, что он отдаёт
301, а не200. - Проверьте, что canonical указывает на основную страницу без параметров.
- Посмотрите исходный код страниц вложений и архивов: нет ли там лишних мета-тегов для индексации.
- В Search Console отправьте на переобход несколько проблемных URL и сравните статус через несколько дней.
- Проверьте sitemap: в нём не должно быть страниц, которые вы закрыли от индексации.
Для быстрой проверки редиректа можно использовать curl:
curl -I https://example.com/old-about/В ответе должен быть статус 301 и заголовок Location с новым адресом. Если видите 200, редирект не сработал или его перебивает другое правило.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt, но она осталась в индексе
Это частая ошибка. Disallow не удаляет URL из индекса мгновенно и не всегда решает проблему дубля. Если страница уже известна поисковику, нужен либо noindex, либо canonical, либо редирект — в зависимости от задачи.
Поставили noindex, но оставили страницу в sitemap
Так делать не стоит. Sitemap и noindex начинают конфликтовать: поисковик видит URL в карте сайта, но получает сигнал не индексировать его. Лучше убрать такие страницы из sitemap полностью.
Сделали редирект на главную вместо релевантной страницы
Это плохая практика для старых URL и вложений. Если есть подходящая новая страница, редирект должен вести туда. Главная — только запасной вариант, когда релевантной замены нет.
Добавили canonical на все страницы подряд
Canonical нужен не везде. Если поставить его без разбора, можно случайно обнулить смысл пагинации, архивов и отдельных посадочных страниц. Canonical должен отражать реальную основную версию контента, а не просто «быть где-то в коде».
Что учесть для безопасности и производительности
Чем меньше мусорных URL генерирует сайт, тем меньше лишней работы у сервера и поисковых роботов. Это не даёт мгновенного прироста, но снижает нагрузку на обход и упрощает поддержку.
Если правите кодом, не вносите такие изменения прямо в активную тему без контроля версий. Лучше вынести логику в небольшой mu-plugin или в отдельный плагин проекта. Тогда при обновлении темы вы не потеряете редиректы и правила canonical.
И ещё один практический момент: не отключайте всё подряд только ради «чистоты». На корпоративном сайте архивы автора могут быть полезны, если у каждого автора есть своя экспертная страница. На блоге теги тоже могут работать, если они реально собирают тематические подборки. Сначала смотрите на структуру сайта, потом режьте дубли.
Если нужен более широкий набор технических настроек для чистки WordPress, часть задач можно закрыть через Clearfy Pro, но перед включением любых автоматических опций всё равно проверьте, какие именно страницы он отключает и как это влияет на sitemap и canonical.