Дубли в WordPress редко появляются «сами по себе». Чаще их создают архивы, пагинация, параметры в URL, сортировки, теги, даты и страницы поиска. На небольшом сайте это выглядит как пара лишних адресов, но в индексе быстро накапливаются десятки и сотни почти одинаковых страниц. В итоге поисковику сложнее понять, какой URL считать основным.
Ниже разберём практический сценарий: как найти источник дублей, что закрывать от индексации, где ставить canonical, а где лучше не трогать шаблон вообще и решить вопрос настройками или плагином.
Как понять, что дубли уже есть
Сначала не правьте код вслепую. Проверьте, какие именно URL индексируются и чем они отличаются. Для WordPress типичные признаки такие:
- одна и та же запись доступна через архив рубрики, метки и поиск;
- страницы пагинации вида
/category/page/2/попадают в индекс без необходимости; - URL с параметрами сортировки или фильтров создают отдельные страницы;
- в поиске видны версии с
?replytocom=,?utm_или другими параметрами; - архивы автора, даты и теги дублируют основной контент.
Быстрая диагностика в Search Console и по сайту
Откройте отчёт по индексированию и посмотрите, какие страницы отмечены как дублированные или выбраны неканонические URL. Затем вручную проверьте несколько адресов:
- основной URL записи;
- URL рубрики;
- страницу пагинации архива;
- версию с параметром в строке запроса;
- страницу поиска по сайту.
Если контент на этих адресах почти одинаковый, проблема не в «плохой индексации», а в структуре сайта. Это и нужно исправлять.
Какие дубли в WordPress встречаются чаще всего
Не все дубли одинаково вредны. Одни можно оставить и просто указать canonical, другие лучше закрыть от индексации, а третьи — вообще отключить на уровне шаблона или настроек.
| Источник дубля | Что делать | Компромисс |
|---|---|---|
| Пагинация архивов | Оставить доступной, но проверить canonical и мета-robots | Не закрывать всё подряд, если страницы реально нужны пользователю |
| Параметры сортировки и фильтров | Чаще всего закрыть от индексации и нормализовать URL | Если фильтр даёт уникальный спрос, оставить только важные комбинации |
| Архивы тегов и дат | Сократить или отключить, если они не несут ценности | Иногда достаточно noindex, а не удаления |
| Страницы поиска | Обычно noindex | Не ломать внутренний поиск и навигацию |
Пошаговое решение: от настройки до кода
Если у вас уже стоит SEO-плагин, сначала проверьте, не решается ли задача без правок темы. Для многих сайтов достаточно отключить лишние архивы, задать noindex для тегов и настроить canonical. Если этого мало, подключайте код.
Шаг 1. Уберите лишние архивы, если они не нужны
Если теги, архивы дат или авторов не дают трафик и не нужны для навигации, их лучше не плодить. Это можно сделать в SEO-плагине или через шаблон темы. Для WordPress это обычно безопаснее, чем пытаться «лечить» уже созданные дубли постфактум.
Если вы используете плагин для технической чистки сайта, например Clearfy Pro, проверьте, не включены ли одновременно несколько настроек, которые закрывают одни и те же архивы разными способами. Двойная логика часто создаёт путаницу в canonical и robots.
Шаг 2. Закройте от индексации страницы поиска и служебные URL
Страницы поиска почти всегда не должны конкурировать с основным контентом. Для них логичен noindex,follow. То же касается служебных страниц с параметрами, если они не несут самостоятельной ценности.
add_action('wp_head', function () {
if (is_search()) {
echo "<meta name=\"robots\" content=\"noindex,follow\" />\n";
}
});Этот вариант рабочий, но в реальном проекте лучше сначала проверить, не делает ли то же самое SEO-плагин. Если делает — не дублируйте вывод мета-тегов кодом.
Шаг 3. Нормализуйте канонический URL для страниц с параметрами
Если на сайте есть параметры сортировки, фильтрации или отслеживания, поисковик может воспринимать их как отдельные страницы. В таких случаях canonical должен указывать на чистый URL без лишних параметров.
add_filter('get_canonical_url', function ($canonical, $post) {
if (is_admin() || empty($canonical)) {
return $canonical;
}
$canonical = remove_query_arg(array('utm_source', 'utm_medium', 'utm_campaign', 'replytocom', 'sort', 'filter'), $canonical);
return $canonical;
}, 10, 2);Здесь важно не переборщить. Не удаляйте параметры, которые реально меняют смысл страницы и должны оставаться отдельными URL. Например, если фильтр создаёт полезные посадочные страницы, их нужно обрабатывать отдельно, а не бездумно резать.
Шаг 4. Для пагинации не ломайте навигацию
Пагинация архивов — не ошибка сама по себе. Обычно её не нужно закрывать полностью. Задача в другом: убедиться, что у страниц архива есть корректный canonical, а в индексе не болтаются мусорные варианты с параметрами.
Если вы вручную правите шаблон, не ставьте noindex на все страницы с /page/2/ и дальше без проверки. Иногда это ухудшает обход сайта, особенно если контент разбит на много архивных страниц.
Когда лучше решить вопрос через плагин, а когда через код
Если задача типовая — скрыть теги, авторские архивы, поиск и служебные страницы — удобнее использовать SEO-плагин или плагин технической чистки. Код нужен там, где у вас нестандартная логика: фильтры каталога, параметры в URL, кастомные архивы, мультиязычность или сложные шаблоны.
| Подход | Плюсы | Минусы |
|---|---|---|
| Плагин | Быстро, меньше риска сломать шаблон | Не всегда покрывает нестандартные URL |
| Код в теме | Точный контроль над canonical и robots | Нужно тестировать после обновлений темы |
| Комбинированный | Закрывает типовые и нестандартные случаи | Легко получить конфликт настроек |
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой страницы. Нужно убедиться, что поисковик видит именно то, что вы задумали.
- Откройте исходный код страницы и проверьте
meta robots. - Проверьте canonical на основной странице и на вариантах с параметрами.
- Сравните HTTP-ответ для страниц поиска, тегов и пагинации.
- Переобойдите несколько URL в Search Console.
- Посмотрите, не появились ли новые дубли после очистки старых параметров.
Если canonical указывает на один адрес, а в индексе остаётся другой, проверьте внутренние ссылки. Часто проблема не в мета-тегах, а в том, что тема продолжает генерировать ссылки с параметрами или на архивы, которые вы уже считаете лишними.
Частые ошибки и как их исправить
Ставят noindex на всё подряд
Это самая частая ошибка. Пользовательские архивы, пагинация и полезные посадочные страницы могут быть нужны. Если закрыть их без разбора, сайт потеряет внутреннюю структуру и часть трафика.
Дублируют логику SEO-плагина кодом темы
Если плагин уже выводит canonical и robots, а вы добавляете ещё один слой в wp_head, можно получить конфликт. В результате поисковик видит несколько мета-тегов или противоречивые указания.
Удаляют параметры, которые меняют содержимое
Не все query-параметры мусорные. Если параметр влияет на сортировку, язык, фильтр или набор товаров/статей, его нельзя просто вырезать из canonical без анализа.
Закрывают страницы, но оставляют на них внутренние ссылки
Если архивы и фильтры закрыты, а меню, хлебные крошки и блоки рекомендаций продолжают вести на них, поисковик всё равно будет их обходить. Сначала уберите лишние ссылки из шаблонов, потом меняйте индексацию.
Чек-лист перед публикацией правок
- Проверен источник дублей: архивы, параметры, поиск, теги, даты.
- Определено, что закрывать, а что оставлять доступным.
- Canonical указывает на чистый основной URL.
- Для поиска и служебных страниц задан
noindex,follow. - Нет конфликта между кодом темы и SEO-плагином.
- Внутренние ссылки не ведут на мусорные варианты URL.
- После правок проверены исходный код и отчёты индексации.
Практика безопасности и производительности
Любые правки, связанные с canonical, robots и архивами, лучше вносить в дочернюю тему или через небольшой mu-plugin, а не в файлы основной темы. Так обновление не затрёт изменения. Перед правкой сделайте резервную копию и проверьте сайт на staging-копии, если она есть.
Если на сайте много параметров в URL, не пытайтесь решать всё регулярками в каждом шаблоне. Лучше централизовать логику в одном месте и документировать, какие параметры разрешены, а какие всегда удаляются. Это снижает риск случайно сломать индексацию при следующем обновлении.
Для сайтов с большим количеством архивов полезно периодически пересматривать структуру рубрик и тегов. Иногда самый эффективный способ убрать дубли — не очередной фильтр в коде, а сокращение числа страниц, которые вообще не должны существовать.