На небольших и средних сайтах WordPress дубли чаще всего появляются не из-за ошибок в тексте, а из-за самой структуры: теги, архивы по датам, страницы вложений, пагинация и служебные таксономии. Поисковик видит несколько URL с почти одинаковым содержимым, а вы потом ловите размывание релевантности и лишние страницы в индексе.
Если задача не в том, чтобы «всё закрыть», а в том, чтобы оставить в индексе только полезные страницы, нужно сначала понять, какие типы архивов реально нужны сайту, а какие только создают шум.
Что именно даёт дубли в WordPress
Чаще всего проблема выглядит так: один и тот же пост доступен через основной URL, архив рубрики, архив тега, архив автора, ленту, страницы вложений и иногда через параметры сортировки или пагинацию. Для пользователя это нормально, для индекса — уже лишняя вариативность.
Типовые источники дублей
- архивы тегов, если теги используются как набор случайных меток;
- архивы дат, если сайт не новостной и такие страницы не несут ценности;
- страницы вложений, которые открывают отдельный URL для картинки без полезного текста;
- пагинация архивов, если на ней дублируются сниппеты и заголовки;
- служебные таксономии и фильтры, которые индексируются без необходимости.
Диагностика: что закрывать, а что оставить
Перед правками проверьте, какие URL уже попали в индекс и какие из них реально нужны. Не стоит отключать всё подряд только потому, что это выглядит «технически лишним».
Проверка через поисковую выдачу и карту сайта
Сначала посмотрите, какие архивы уже доступны поисковикам. Для этого достаточно:
- проверить результаты по запросам вида
site:example.ru tag,site:example.ru /author/,site:example.ru /attachment/; - открыть XML-карту сайта и понять, попадают ли туда архивы тегов и авторов;
- сравнить количество полезных страниц и количество служебных URL в индексе.
Если архивы не несут самостоятельной ценности, их лучше убрать из индекса и не тратить на них краулинговый бюджет.
Пошаговое решение без поломки навигации
Есть три рабочих подхода: закрыть через SEO-плагин, убрать из генерации ссылок и метаданных, либо доработать тему/плагин кодом. На практике чаще всего комбинируют первый и третий варианты.
| Подход | Когда подходит | Минус |
|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы и управлять meta robots | Не всегда удобно для точечной логики |
| Код в теме или mu-plugin | Нужна точная настройка без лишних интерфейсов | Требует аккуратного тестирования после обновлений |
| Комбинация | Часть архивов закрывается глобально, часть — выборочно | Нужно следить, чтобы правила не конфликтовали |
1. Закройте ненужные архивы через robots meta
Если у вас установлен SEO-плагин, используйте его настройки для тегов, дат и вложений. Это безопаснее, чем править шаблоны вручную, потому что плагин обычно сам ставит корректный noindex,follow или аналогичную директиву.
Если нужен кодовый вариант, можно добавить фильтр в functions.php дочерней темы или в отдельный mu-plugin. Пример ниже отключает индексацию архивов тегов, дат и вложений, но не трогает рубрики и записи:
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_tag() || is_date() || is_attachment() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот вариант работает на современных версиях WordPress, где используется фильтр wp_robots. Он не удаляет страницы физически, а только меняет поведение для поисковиков.
2. Отключите страницы вложений и сделайте редирект на файл или запись
Страницы вложений часто бесполезны: на них одна картинка и минимум контекста. Если такие URL уже индексируются, лучше либо закрыть их от индексации, либо перенаправить на родительскую запись, если она есть.
<?php
add_action( 'template_redirect', function() {
if ( is_attachment() ) {
$parent = wp_get_post_parent_id( get_queried_object_id() );
if ( $parent ) {
wp_safe_redirect( get_permalink( $parent ), 301 );
exit;
}
}
} );Важно: не делайте редирект на главную страницу для всех вложений без разбора. Это ухудшает поведение сайта и создаёт странные цепочки для поисковика и пользователя.
3. Уберите лишние архивы из меню, карты сайта и внутренних ссылок
Если архив не нужен в индексе, но ссылка на него висит в меню, футере или блоке «облако тегов», вы продолжаете подталкивать поисковик к этим URL. Поэтому после настройки индексации проверьте шаблоны темы и виджеты.
- уберите архивы дат из меню, если они там есть;
- проверьте блоки тегов в сайдбаре и под статьями;
- не выводите ссылки на страницы вложений в списках медиафайлов;
- если используете SEO-плагин, проверьте, исключены ли закрытые архивы из sitemap.
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. Откройте несколько проблемных URL и убедитесь, что они отдают нужные директивы и код ответа.
Что смотреть вручную
- в исходном коде страницы есть
noindexдля архивов, которые вы закрывали; - страницы вложений либо редиректят на родительскую запись, либо закрыты от индекса;
- закрытые архивы больше не попадают в XML-карту сайта;
- внутренние ссылки не ведут на служебные URL без необходимости.
Если есть доступ к консоли, можно быстро проверить заголовки ответа:
curl -I https://example.ru/tag/sample/
curl -I https://example.ru/2024/01/
curl -I https://example.ru/sample-image/Для страниц с редиректом смотрите, что ответ действительно 301, а не 302 или цепочка из нескольких переходов.
Частые ошибки и как их исправить
Закрыли архивы, но оставили их в sitemap
Так бывает, если настройка индексации сделана в коде, а карта сайта генерируется отдельно. Поисковик получает противоречивые сигналы: в sitemap URL есть, а на странице стоит noindex. Исправление простое — исключить эти типы страниц из генерации карты сайта в SEO-плагине или его настройках.
Поставили noindex на всё подряд
Иногда под фильтр попадают и полезные рубрики. Это уже ошибка архитектуры, потому что рубрики часто нужны как посадочные страницы. Проверяйте условия в коде: is_tag(), is_date(), is_attachment() — это не то же самое, что is_archive() в целом.
Редирект на главную вместо родительской записи
Такой редирект ухудшает релевантность и может выглядеть как мягкая ошибка. Если у вложения есть родитель, ведите на него. Если родителя нет, лучше оставить страницу закрытой от индекса, чем отправлять всё на главную.
Удалили теги, но не почистили ссылки в контенте
Если теги использовались в тексте, старые ссылки могут вести в никуда после удаления таксономии. Перед массовой чисткой проверьте, где теги реально используются: в шаблоне, в блоках, в контенте и в хлебных крошках.
Практические советы по безопасности и производительности
Любые правки лучше вносить не в основной файл темы, а в дочернюю тему или отдельный mu-plugin. Тогда обновление темы не затрёт изменения. Для небольших сайтов это особенно важно, потому что технические фиксы часто делают один раз и потом забывают, где именно они лежат.
- не редактируйте исходную тему, если она обновляется;
- перед изменениями сделайте резервную копию и проверьте на staging;
- если используете SEO-плагин, не дублируйте его правила кодом без необходимости;
- после внедрения проверьте, не появились ли ошибки в логах и нет ли лишних 404;
- не закрывайте архивы, которые реально приводят трафик и помогают навигации.
Если нужен более широкий аудит дублей и технической чистки, удобно смотреть в сторону инструментов вроде Clearfy Pro: он закрывает типовые SEO-дубли и часть служебной нагрузки без ручного разрастания кода. Но даже с таким плагином логику индексации всё равно стоит проверять вручную, особенно на нестандартных темах и сайтах с кастомными таксономиями.
После внедрения через несколько дней проверьте отчёты поисковой консоли: важно не только убрать лишние URL, но и убедиться, что полезные страницы не выпали из обхода. Если индекс стал чище, а служебные архивы исчезли из выдачи, значит настройка сделана правильно.