Слепые дубликаты в WordPress — это страницы, которые открываются по разным URL, но показывают один и тот же контент или почти один и тот же шаблон. В админке они могут выглядеть как обычные записи, а в индексе поисковика уже живут отдельными адресами: с параметрами, с разными окончаниями слэша, с архивами автора, с пагинацией, с вложенными путями, с версией для печати или с техническими дублями из темы и плагинов.
Проблема обычно всплывает не в момент публикации, а позже: в Search Console растет число «Просканировано, но не проиндексировано», в логах видны лишние обходы, а на сайте появляются каноникалы, которые указывают не туда. Ниже — рабочая схема, как такие дубли найти, понять источник и убрать без лишнего риска.
Как понять, что у вас именно дубли, а не просто похожие страницы
Сначала стоит отделить настоящий дубль от нормальной похожести. Например, карточки услуг в одной категории могут иметь одинаковую структуру, но разные тексты и мета-данные — это не дубль. А вот одна и та же статья, доступная по /post-name/, /post-name/?amp и /category/news/post-name/, уже создает лишние URL.
Признаки, которые можно проверить без специальных инструментов
- Один и тот же заголовок страницы открывается по нескольким адресам.
- В исходном коде у разных URL совпадает
rel=canonical, но поисковик все равно видит отдельные страницы. - В отчете Search Console есть страницы с параметрами, пагинацией или архивами таксономий, которые не должны индексироваться.
- В логах сервера один и тот же контент часто запрашивается по разным путям.
Если у вас есть доступ к консоли браузера, откройте две версии страницы и сравните canonical, title и HTTP-статус. Для дубля важно не только совпадение текста, но и то, что поисковик может выбрать не ту версию как основную.
Диагностика: где искать источник дублей
Начинать лучше не с правок, а с карты источников. В WordPress дубли чаще всего появляются в четырех местах: настройки постоянных ссылок, архивы таксономий, шаблоны темы и плагины, которые генерируют альтернативные URL.
Проверьте базовые варианты URL
Сравните, открывается ли одна и та же страница по разным адресам:
- со слэшем и без него;
- с
wwwи безwww; - по HTTP и HTTPS;
- с параметрами
?utm_,?replytocom,?ampи другими служебными хвостами; - через архивы рубрик, тегов, автора и дат.
Если сервер не приводит все варианты к одному каноническому адресу, поисковик получает несколько страниц с одинаковым содержимым.
Посмотрите, не создает ли дубль тема
Иногда проблема не в WordPress как таковом, а в шаблоне. Например, тема может выводить один и тот же материал в блоке «похожие записи» по отдельному шаблону, а плагин — создавать отдельную страницу предпросмотра или печати. В таком случае canonical может быть правильным, но лишний URL все равно существует и индексируется.
Быстрая проверка через curl
Если нужно быстро понять, что отдает сервер, удобно сравнить заголовки и статус-код:
curl -I https://example.com/post-name/
curl -I https://example.com/post-name/?amp
curl -I https://example.com/category/news/post-name/Смотрите на HTTP/2 200, 301 или 404. Если несколько адресов отдают 200 и один и тот же контент, это уже повод наводить порядок.
Как убрать дубли: рабочая последовательность
Лучше идти от источника к следствию: сначала закрыть генерацию лишних URL, потом настроить канонизацию, и только затем чистить индекс через редиректы и noindex. Если сделать наоборот, можно потерять нужные страницы или получить цепочки редиректов.
1. Оставьте один основной URL
Для каждой страницы должен быть один канонический адрес. Обычно это делается на уровне постоянных ссылок и редиректов сервера. Если сайт уже живет на одном формате, не меняйте структуру без необходимости — это почти всегда дороже, чем точечная чистка дублей.
Если нужно принудительно привести HTTP к HTTPS и убрать www, используйте серверный редирект. Для Apache это может выглядеть так:
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]Это не решает все дубли, но убирает базовую разрозненность адресов.
2. Закройте технические архивы от индексации
Архивы автора, даты и служебные страницы часто не несут самостоятельной ценности, но создают массу дублей. Если они не нужны для поиска внутри сайта, их лучше закрыть через noindex и оставить доступными для пользователей только там, где это оправдано.
Для этого удобно использовать SEO-плагин или настройки темы, но если вы делаете это кодом, проверяйте, что не ломаете нужные разделы. Например, для архивов автора можно добавить фильтр в тему или мини-плагин:
add_action('wp_head', function () {
if (is_author() || is_date()) {
echo "<meta name=\"robots\" content=\"noindex,follow\" />\n";
}
});Это не заменяет нормальную настройку SEO-плагина, но помогает быстро закрыть очевидные архивы, если у вас нет готового решения.
3. Уберите параметрические дубли
Параметры вроде ?replytocom, ?utm_source и служебных хвостов часто создают отдельные URL. Для аналитических UTM это нормально, но такие адреса не должны становиться самостоятельными страницами в индексе.
Если параметр нужен только для трекинга, убедитесь, что canonical указывает на чистый URL без параметров. Если параметр технический и не нужен на фронтенде, лучше убрать его генерацию или перенаправить запросы на чистый адрес.
4. Проверьте canonical на шаблонах
Иногда дубликаты не закрываются, потому что canonical на странице формируется неправильно. Это бывает после кастомизации темы, при выводе контента через REST API или при ручной правке шаблонов header.php.
В теме canonical должен соответствовать текущему основному URL. Если вы выводите его вручную, не дублируйте тег из SEO-плагина. Два canonical в одном документе — частая ошибка, из-за которой поисковик может проигнорировать оба.
Сравнение подходов: редирект, canonical или noindex
| Подход | Когда применять | Плюс | Минус |
|---|---|---|---|
| 301-редирект | Есть явный лишний URL, который не нужен пользователю | Собирает сигналы в один адрес | Требует аккуратной настройки, возможны цепочки |
| canonical | Дубли похожи, но их нельзя убрать физически | Мягко подсказывает основную версию | Не гарантирует исключение из индекса |
| noindex | Архивы и служебные страницы не нужны в поиске | Прямо закрывает от индексации | Не решает проблему лишних обходов |
На практике чаще всего нужен не один инструмент, а связка: редирект для явных дублей, canonical для альтернативных представлений и noindex для архивов, которые не должны ранжироваться.
Проверка результата после внедрения
После правок не ограничивайтесь открытием страницы в браузере. Нужно проверить, что поисковый и серверный слой видят именно ту версию, которую вы оставили основной.
Что проверить вручную
- Основной URL отдает
200и правильный canonical. - Лишние URL отдают
301на основной адрес илиnoindex, если редирект неуместен. - В исходном коде нет двух одинаковых canonical.
- В Search Console новые URL не появляются как отдельные страницы со статусом «дублируется».
Что проверить через инструменты
Если есть доступ к Search Console, откройте отчет по страницам и посмотрите, не осталось ли адресов с параметрами, архивами и альтернативными путями. Для локальной проверки можно снова использовать curl -I и сравнить заголовки до и после изменений.
Полезно также пройтись по сайту краулером или хотя бы внутренним поиском по шаблонам: иногда дубль остается в хлебных крошках, в sitemap или в блоках «похожие материалы».
Частые ошибки и как их исправить
Редирект на редирект
Если вы сначала отправляете URL на промежуточный адрес, а потом на основной, поисковик тратит лишние обходы. Исправление простое: сразу ведите на финальный URL.
Canonical указывает на несуществующую страницу
Это бывает после смены структуры ссылок или удаления записи. Проверьте, что canonical возвращает 200, а не 404 и не редирект.
Одинаковые страницы в sitemap
Если в карту сайта попали архивы, параметры или тестовые URL, поисковик будет снова и снова их обходить. Уберите их из генерации sitemap на уровне SEO-плагина или фильтра.
Закрыли страницу noindex, но оставили внутренние ссылки
Такой URL продолжает получать вес и обходы, хотя в индекс не должен попадать. Если страница реально не нужна, лучше убрать ее из навигации и заменить на основной адрес.
Сломали нужные архивы
Иногда авторские или рубричные страницы действительно нужны для навигации. В этом случае не закрывайте их без проверки пользовательского сценария. Лучше ограничиться canonical и аккуратной настройкой индексации, чем вырезать полезный раздел.
Практические советы по безопасности и производительности
Чистка дублей — это не только про SEO. Чем меньше лишних URL, тем меньше мусорных обходов, ниже нагрузка на сервер и меньше шансов, что в индекс попадет техническая страница с устаревшим содержимым.
- Не правьте редиректы прямо в продакшене без бэкапа конфигурации.
- После изменения правил проверьте несколько старых URL из логов, а не только главную страницу.
- Если используете SEO-плагин, не дублируйте его функции кодом в теме.
- Не закрывайте от индексации все подряд архивы без понимания, как сайт ищут пользователи.
Если на сайте много технических дублей и ручная чистка становится рутиной, имеет смысл вынести базовую SEO-гигиену в отдельный инструмент. В таких сценариях часто используют Clearfy Pro как набор для чистки дублей и технической оптимизации: https://wpshop.ru/plugins/clearfy. Но даже с плагином важно понимать, какой именно URL вы закрываете и почему.
Если после правок дубли все еще появляются, ищите источник не в индексации, а в генерации URL: шаблоны темы, фильтры плагинов, хлебные крошки, sitemap и внутренние ссылки. Именно там обычно прячется причина, а не в самом поисковике.