В WordPress дубли страниц появляются не только из-за тегов и рубрик. Чаще всего их создают пагинация, архивы автора, страницы вложений, параметры URL, версии с и без слеша, а иногда — тема или SEO-плагин, который генерирует лишние мета-теги. Если не разобраться с источником, можно получить размытый вес страниц, лишние обходы ботом и странные URL в индексе.
Ниже — рабочая схема: сначала находим, какие именно дубли есть на сайте, потом решаем, что закрывать, что канонизировать, а что оставлять как отдельную страницу. Без универсального «закрыть всё noindex» — это обычно ломает полезные разделы.
Какие дубли в WordPress встречаются чаще всего
Одинаковый контент может открываться по разным адресам, и поисковик не всегда сам выбирает нужный вариант. На практике чаще всего всплывают такие сценарии:
- страницы записей доступны через архивы рубрик, тегов и автора;
- страницы вложений медиа-объектов индексируются отдельно;
- пагинация архивов создаёт похожие страницы с повторяющимися блоками;
- URL с параметрами сортировки, фильтров или UTM попадают в индекс;
- дубли из-за http/https, www/non-www, слеша на конце;
- страницы поиска по сайту и служебные страницы с тонким контентом.
Если сайт уже на SEO-плагине, часть задач может быть решена настройками. Но сначала полезно понять, что именно у вас дублируется, иначе легко выключить нужные архивы вместе с мусором.
Диагностика: как быстро найти источник дублей
Начните с поиска в Google Search Console и в логике самого сайта. В отчётах по страницам часто видно, какие URL поисковик считает альтернативными. Дальше проверьте код страниц и структуру шаблонов.
Что смотреть в первую очередь
- тег
<link rel="canonical">на разных типах страниц; - мета-тег robots: нет ли случайного
noindexили, наоборот, отсутствия ограничений; - архивы рубрик, тегов, автора и дат;
- страницы вложений в медиа-библиотеке;
- параметры в URL, которые создают отдельные адреса для одного и того же контента.
Если нужен быстрый технический осмотр, удобно выгрузить несколько URL и проверить заголовки ответа. Например, так можно увидеть canonical и robots без браузера:
curl -I https://example.com/sample-post/Для HTML-проверки лучше смотреть исходник страницы и искать canonical вручную или через консоль браузера. Если canonical отсутствует либо указывает не туда, это уже не косметика, а причина дублей.
Пошаговое решение: что закрывать, а что канонизировать
Правильный подход зависит от типа страницы. Не все дубли надо закрывать. Иногда достаточно указать поисковику основной URL, а иногда лучше убрать страницу из индекса полностью.
1. Оставьте индексируемыми только полезные архивы
Если рубрики реально помогают навигации и содержат уникальные описания, их можно оставить в индексе. Теги и архивы автора часто полезны только на крупных контентных проектах. На небольшом сайте они нередко создают тонкие страницы без ценности.
В SEO-плагине проверьте, не открыты ли лишние архивы по умолчанию. Если у вас установлен, например, Clearfy Pro, часть дублей можно убрать настройками без правки шаблонов. Но даже в этом случае стоит проверить итоговый HTML, а не полагаться только на галочки.
2. Настройте canonical для похожих URL
Если одна и та же запись открывается с параметрами, canonical должен указывать на чистый основной адрес. Для этого в теме или плагине можно добавить фильтр, если стандартной настройки недостаточно.
add_filter('wpseo_canonical', function ($canonical) {
if (is_singular('post')) {
return get_permalink();
}
return $canonical;
});Этот пример относится к Yoast SEO: фильтр wpseo_canonical позволяет переопределить canonical. Если у вас другой SEO-плагин, используйте его собственный фильтр или настройку. Не вставляйте этот код вслепую, если canonical уже формируется корректно — можно получить конфликт с плагином.
3. Закройте страницы вложений и служебные URL
Страницы вложений обычно не нужны в индексе, если у них нет самостоятельной ценности. В большинстве случаев лучше редиректить их на файл или на родительскую запись. Аналогично стоит поступать со страницами поиска и техническими URL, если они не должны ранжироваться.
Для вложений можно использовать редирект на родительскую запись через template_redirect:
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = wp_get_post_parent_id(get_the_ID());
if ($parent) {
wp_redirect(get_permalink($parent), 301);
exit;
}
}
});Если родительской записи нет, решение нужно подбирать отдельно: иногда лучше отправить на главную медиа-библиотеки, иногда — оставить 404, если страница не несёт пользы.
4. Уберите параметрические дубли
UTM-метки, сортировка и фильтры могут порождать десятки URL с одинаковым контентом. Для поисковика это шум. Обычно такие адреса не нужно индексировать, а canonical должен вести на чистую версию страницы.
Если параметры создаются фронтендом или сторонним плагином, проверьте, не генерируются ли они в ссылках внутри сайта. Иногда проблема не в индексации, а в том, что внутренние ссылки уже размножили URL.
Сравнение подходов: плагин, код или настройка шаблона
| Подход | Когда подходит | Минус |
|---|---|---|
| SEO-плагин | Если нужно быстро закрыть архивы, задать canonical и robots без кода | Не всегда решает нестандартные URL и конфликты шаблонов |
| Код в теме/плагине | Если дубли создаёт конкретная логика сайта или кастомный тип записей | Нужна аккуратность при обновлениях и тестировании |
| Правка шаблона | Если canonical или meta robots рендерятся неверно из-за темы | Можно сломать совместимость с SEO-плагином |
На практике лучше комбинировать: базовые настройки делаете в SEO-плагине, а точечные случаи закрываете кодом. Это проще сопровождать и легче проверять после обновлений.
Проверка результата после внедрения
После правок не ограничивайтесь открытием страницы в браузере. Нужно проверить и HTML, и ответ сервера, и то, как URL видит поисковик.
- Откройте несколько типовых страниц и убедитесь, что canonical указывает на основной URL.
- Проверьте, что у дублей с параметрами canonical не меняется на случайный адрес.
- Посмотрите, не появились ли лишние
noindexна полезных страницах. - Сравните поведение URL со слешем и без слеша — должен быть один вариант.
- В Search Console отправьте на проверку важные страницы после изменения шаблонов.
Для быстрой проверки canonical можно использовать поиск по исходнику страницы:
curl -s https://example.com/sample-post/ | grep -i canonicalЕсли canonical есть, но указывает на другой URL, проверьте фильтры SEO-плагина, кэш и правила редиректов. Иногда старый HTML отдается из кэша, и кажется, что правка не сработала.
Частые ошибки и как их исправить
Canonical ведёт на несуществующую страницу
Так бывает после смены структуры ссылок или при ручной генерации canonical в шаблоне. Исправление простое: canonical должен указывать на реально доступный основной URL, а не на старый адрес из базы.
Закрыли noindex всё подряд
Это частая ошибка при борьбе с дублями. В итоге из индекса исчезают полезные рубрики, страницы авторов с сильным контентом или важные посадочные. Сначала определите ценность страницы, потом решайте, закрывать её или нет.
Редиректы создали цепочку
Если одновременно включены редиректы в плагине, в сервере и в коде темы, можно получить цепочку 301. Это замедляет обход и иногда ломает canonical. Нужен один источник истины для каждого типа редиректа.
Страницы вложений редиректятся не туда
У медиа-файлов иногда нет родителя, и тогда код с wp_get_post_parent_id() возвращает пустое значение. В таком случае нужен запасной сценарий: либо отправка на архив медиа, либо 404, если это соответствует логике сайта.
Безопасность и производительность: что не забыть
Любая правка canonical и редиректов должна быть обратимой. Не вносите логику напрямую в functions.php, если у вас нет контроля над темой: после обновления изменения могут потеряться. Для стабильности лучше использовать дочернюю тему или небольшой mu-plugin.
Если сайт большой, не добавляйте тяжёлые проверки на каждом запросе. Условные теги WordPress вроде is_singular() и is_attachment() работают быстро, но лишняя логика в template_redirect всё равно должна быть минимальной. Чем меньше условий и внешних вызовов, тем проще сопровождать код.
Когда дублей много из-за шаблонов и служебных страниц, полезно сначала навести порядок в генерации URL, а уже потом чистить индекс. Иначе поисковик будет снова находить новые варианты тех же страниц.
Если нужен инструмент для более широкой технической чистки сайта, можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином проверка canonical и редиректов вручную остаётся обязательной.