Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: архивы тегов, страницы пагинации, параметры в URL, версии с www и без www, HTTP и HTTPS, а иногда еще и дубли из-за плагинов фильтрации. Если не разрулить это на уровне индексации, поисковик начинает тратить краулинговый бюджет на мусор, а нужные страницы получают меньше внимания.
Ниже — рабочая схема, которая помогает не «прятать сайт от индексации», а аккуратно разделить: что должно остаться в поиске, что нужно склеить, а что лучше закрыть от индексации. Без магии и без лишних плагинов.
Как понять, что у вас именно дубли, а не просто просадка трафика
Сначала стоит проверить симптомы. Если в индексе есть несколько URL с одинаковым или почти одинаковым контентом, это видно по поиску в Яндекс.Вебмастере, Google Search Console и по обычной выборке через site:. Но важнее не сам факт наличия дублей, а их тип.
Типичные источники дублей в WordPress
- страницы с параметрами
?replytocom=,?utm_,?filter=и похожими; - архивы рубрик, тегов, авторов и дат, если они дублируют основной контент;
- страницы пагинации архивов;
- версии URL со слешем и без слеша, если сайт настроен нестабильно;
- дубли главной страницы через
/index.php,/homeили старые редиректы; - страницы вложений медиафайлов, если они индексируются отдельно и не несут пользы;
- контент, который выводится в нескольких архивах одновременно.
Если страницы отличаются только URL, а текст и заголовки почти одинаковые, это уже кандидат на canonical или 301. Если страница нужна пользователю, но не должна участвовать в поиске, чаще подходит noindex. Если URL вообще не должен существовать как отдельная сущность, нужен редирект.
Что выбрать: canonical, noindex или 301
У этих инструментов разная задача. Ошибка многих сайтов в том, что все подряд закрывают noindex, хотя часть дублей нужно именно склеивать. Это разные сценарии.
| Ситуация | Что делать | Почему |
|---|---|---|
| Один и тот же контент доступен по старому и новому URL | 301 редирект | Передает сигнал о постоянном переезде и убирает дубль из обращения |
| Есть похожие страницы, но одна основная | rel=canonical | Помогает поисковику выбрать основную версию без удаления остальных |
| Страница нужна пользователю, но не должна индексироваться | noindex | Страница остается доступной, но не участвует в поиске |
Если коротко: 301 — для переезда, canonical — для склейки, noindex — для исключения из индекса без удаления страницы.
Пошаговая схема: как убрать дубли без поломки сайта
1. Сначала проверьте базовую канонизацию
Убедитесь, что сайт отдает одну основную версию домена: либо с www, либо без него; либо только HTTPS. Это делается на уровне сервера или через настройки WordPress, но не двумя способами сразу. Если редиректы настроены криво, поисковик будет видеть цепочки и петли.
Проверьте, что в Настройки → Общие адрес WordPress и адрес сайта совпадают с основной версией. После этого откройте несколько страниц и посмотрите заголовки ответа:
curl -I https://example.com/page/В ответе должен быть один финальный 200 OK без лишних промежуточных переходов. Если сначала идет 301 на другой домен, потом еще один 301 на слеш, а потом 200, это уже лишняя цепочка.
2. Склейте старые и неканонические URL через 301
Если у вас есть старые адреса, которые больше не нужны, не закрывайте их noindex. Лучше отправить их на актуальную страницу. Для Apache это можно сделать через .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]Для Nginx логика та же, только на уровне конфигурации сервера. Если вы не уверены в правиле, лучше не копировать его вслепую: сначала проверьте текущую схему редиректов, иначе можно получить бесконечный цикл.
3. Для архивов и служебных страниц используйте noindex точечно
Не все архивы должны быть в поиске. Например, если теги на сайте создаются автоматически и дублируют рубрики, их разумно закрыть от индексации, но оставить доступными для пользователей. Это можно сделать через SEO-плагин или кодом, если нужно точечно.
Пример для вывода noindex на архиве тегов и страницах автора, если вы точно понимаете, что они не нужны в поиске:
add_action('wp_head', function () {
if (is_tag() || is_author()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});Это рабочий вариант, но он не заменяет стратегию. Если архивы уже попали в индекс, одного noindex может быть мало: поисковику нужно время, чтобы переобойти страницы и убрать их из выдачи.
4. Для похожих страниц задайте canonical
Canonical полезен там, где есть несколько URL с близким содержимым: например, страницы фильтрации, сортировки или пагинации, если они не должны конкурировать с основной страницей. В WordPress можно вывести canonical вручную, но только если вы понимаете, что именно делаете. Иначе лучше доверить это SEO-плагину.
Пример для нестандартной страницы, где canonical должен указывать на основную категорию:
add_action('wp_head', function () {
if (is_page('catalog-filtered')) {
echo '<link rel="canonical" href="https://example.com/catalog/">' . "\n";
}
});Важно: canonical не запрещает индексацию. Он лишь подсказывает предпочтительный URL. Если страница совсем не нужна в поиске, canonical не заменяет noindex.
Диагностика: где искать ошибки в WordPress
Если дубли уже есть, сначала найдите их источник, а не лечите симптомы. На практике я бы проверял в таком порядке:
- настройки постоянных ссылок в WordPress;
- редиректы на уровне сервера;
- SEO-плагин и его шаблоны meta robots;
- архивы тегов, авторов, дат;
- страницы вложений;
- параметры в URL, которые генерируют фильтры и сортировки;
- внутренние ссылки в меню, хлебных крошках и блоках.
Если используется плагин для технической чистки сайта, например Clearfy Pro, его удобно применять как инструмент для отключения лишних архивов и дублей, но не как замену пониманию логики индексации. Сначала определите, что именно должно остаться в поиске, а потом уже отключайте лишнее.
Как проверить, что решение сработало
После внедрения не ограничивайтесь тем, что «страница открывается». Проверка должна быть технической.
- Откройте старый URL и убедитесь, что он отдает
301на нужную страницу. - Проверьте финальный URL через
curl -Iили любой HTTP checker. - Посмотрите исходный код страницы и убедитесь, что canonical указывает на правильный адрес.
- Проверьте, что страницы, закрытые от индексации, действительно отдают
noindex,followили нужный вам вариант. - В Search Console и Вебмастере отправьте на переобход важные URL и посмотрите, как они меняют статус.
Для быстрой проверки canonical можно открыть исходный код и найти строку:
<link rel="canonical" href="https://example.com/target-page/">Если на странице с параметрами canonical указывает на саму себя, а должна указывать на основную версию, значит правило не сработало или его перезаписывает тема/плагин.
Частые ошибки и как их исправить
Ставят noindex на все подряд
Это частая реакция после обнаружения дублей. В итоге из индекса исчезают не только мусорные архивы, но и полезные страницы, которые могли бы приводить трафик. Исправление простое: сначала разделите типы страниц, потом решайте, что закрывать, а что склеивать.
Делают canonical на нерелевантную страницу
Иногда canonical указывает на главную, хотя страница относится к конкретной категории или статье. Это плохая практика: поисковик может проигнорировать такой сигнал. Canonical должен вести на максимально близкую основную версию.
Оставляют цепочки редиректов
Например, http → www → https → слеш. Это не только лишняя нагрузка, но и риск потери части сигналов. Лучше настроить один прямой переход на финальный URL.
Закрывают в robots.txt то, что нужно склеить
Запрет в robots.txt не удаляет URL из индекса сам по себе. Если страница уже известна поисковику, он может продолжать показывать ее без контента. Для дублей чаще нужен canonical, noindex или 301, а не просто Disallow.
Безопасность и производительность: что не стоит делать
Не ставьте несколько SEO-плагинов одновременно, если они оба управляют canonical и meta robots. В таких конфигурациях легко получить конфликт: один плагин выводит canonical, второй перезаписывает его, третий добавляет лишний noindex. В результате диагностика становится сложнее, чем сама проблема.
Если правите редиректы в коде, делайте это после бэкапа и теста на staging. Ошибка в условии может увести весь сайт в цикл редиректов. Для больших сайтов лучше выносить правила на уровень сервера, а не плодить PHP-условия в теме.
Еще один практический момент: не генерируйте canonical динамически на основе реферера, UTM или других параметров. Canonical должен быть стабильным. Если URL меняется от запроса к запросу, поисковик перестает доверять сигналу.
Когда лучше использовать плагин, а когда код
Если задача типовая — отключить архивы, задать robots и убрать служебные дубли — удобнее использовать SEO-плагин или инструмент технической чистки. Если же проблема точечная и связана с конкретным шаблоном темы или нестандартным типом записей, код дает больше контроля.
Ниже короткое сравнение:
| Подход | Плюсы | Минусы |
|---|---|---|
| Плагин | Быстро, меньше риска ошибиться в шаблоне | Может конфликтовать с темой и другими плагинами |
| Код в теме/му-плагине | Точный контроль, легко привязать к условиям | Нужна аккуратность и тестирование |
| Серверный редирект | Быстро и надежно для 301 | Нужен доступ к конфигу и понимание синтаксиса |
Если у вас уже есть SEO-плагин, не дублируйте его функции самописным кодом без необходимости. Лучше выбрать один источник правды для canonical и robots, а редиректы держать отдельно.
В итоге рабочая схема обычно выглядит так: старые и ненужные URL склеиваются через 301, служебные архивы получают noindex,follow, а похожие страницы — корректный canonical. Это не убирает все проблемы магически, но позволяет навести порядок в индексации без лишней ломки сайта.