Технические дубли в WordPress появляются чаще, чем кажется: одна и та же запись доступна по нескольким URL, архивы тегов и авторов дублируют контент, а служебные страницы иногда попадают в индекс. В итоге поисковик тратит краулинговый бюджет не туда, а в отчётах растёт мусор вместо полезных страниц.
Ниже — рабочая схема, которая помогает не «запретить всё подряд», а аккуратно сократить индексируемые дубли. Подход рассчитан на обычный WordPress без выдуманных плагинов и без магии: сначала диагностика, потом точечные правки, затем проверка результата.
Какие дубли в WordPress встречаются чаще всего
Перед правкой важно понять, что именно вы закрываете. Ошибка многих сайтов — одинаково обрабатывать все URL, хотя причины дублей разные.
Типовые источники дублей
- страницы с пагинацией архивов:
/page/2/,/page/3/; - архивы тегов и авторов, если они не несут самостоятельной ценности;
- служебные URL с параметрами сортировки, фильтров или UTM;
- версии с
wwwи без него, если не настроен единый канонический хост; - страницы вложений медиафайлов, которые индексируются отдельно;
- страницы поиска по сайту вида
/?s=....
Не все из них нужно закрывать в robots.txt. Иногда правильнее поставить noindex, а иногда — сделать 301-редирект на канонический URL.
Диагностика: где именно у вас появляются дубли
Сначала соберите факты. Без этого легко закрыть полезные страницы и оставить в индексе то, что действительно мешает.
Что проверить в первую очередь
- отчёт «Страницы» в Google Search Console: какие URL индексируются, но не должны;
- результаты поиска по сайту через оператор
site:example.ru; - наличие одинаковых title и description у архивов и записей;
- доступность одной и той же страницы по разным адресам;
- ответ сервера для служебных URL:
200,301,404,noindex.
Если у вас есть доступ к командной строке, быстро проверить заголовки можно так:
curl -I https://example.ru/page/2/
curl -I https://example.ru/?s=тест
curl -I https://example.ru/wp-content/uploads/2024/01/image.jpgИщите не только код ответа, но и заголовок X-Robots-Tag, если он уже настроен на сервере или через плагин.
Что закрывать через robots.txt, а что — через noindex
Это ключевой момент. robots.txt не убирает страницу из индекса сам по себе. Он только запрещает обход. Если URL уже известен поисковику, он может остаться в выдаче без сниппета. Поэтому для части страниц лучше использовать noindex.
| Сценарий | Лучший вариант | Компромисс |
|---|---|---|
Поисковые страницы ?s= | noindex, follow | Редирект на страницу поиска с нулевым результатом не нужен |
| Архивы тегов без ценности | noindex, follow | Оставить только важные теги |
| Параметры сортировки и фильтров | каноникал + запрет обхода в robots.txt для мусорных параметров | Если параметры уже в индексе, нужен отдельный вывод из индекса |
| Медиа-вложения | 301 на файл или родительскую запись | Если вложения уже индексируются, сначала убрать их из выдачи |
Пошаговое решение
1. Настройте единый канонический адрес сайта
Если сайт доступен и с www, и без него, поисковик может считать это разными хостами. В WordPress базовый адрес задаётся в настройках, но редирект лучше закрепить на уровне сервера.
Для Apache можно использовать такой вариант в .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.ru$ [NC]
RewriteRule ^(.*)$ https://example.ru/$1 [L,R=301]
</IfModule>Если у вас Nginx, правило настраивается в конфиге виртуального хоста, а не в .htaccess. Это важно: не пытайтесь копировать Apache-правила в Nginx без адаптации.
2. Закройте мусорные параметры в robots.txt
Файл robots.txt полезен для снижения лишнего обхода. Но закрывайте только то, что действительно не нужно сканировать.
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /*?replytocom=
Disallow: /*?utm_
Disallow: /*?sort=
Disallow: /*?filter=
Sitemap: https://example.ru/sitemap_index.xmlЗдесь есть важная оговорка: шаблоны с * и $ поддерживаются не всеми роботами одинаково. Для Google и Яндекса такой подход обычно работает, но если у вас сложная структура URL, лучше дополнительно проверить, как именно поисковик видит правила.
3. Уберите из индекса архивы и служебные страницы через SEO-настройки
Если у вас есть SEO-плагин, используйте его штатные настройки для noindex на тегах, авторах, датах и страницах поиска. Это надёжнее, чем пытаться закрыть всё через robots.txt.
Если плагина нет, можно добавить мета-тег вручную для отдельных типов страниц:
add_action('wp_head', function () {
if (is_search() || is_tag() || is_author()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});Такой код лучше использовать только если вы понимаете, какие архивы реально нужны. Например, теги в новостном проекте могут быть полезны, а в небольшом корпоративном блоге — чаще нет.
4. Сделайте редирект для страниц вложений
Страницы вложений часто создают пустые URL, которые не несут ценности. Если медиа-страницы не нужны, перенаправляйте их на сам файл или на родительскую запись.
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 или настройте отдельную логику в зависимости от структуры сайта.
Проверка результата после внедрения
После правок не ограничивайтесь открытием пары страниц в браузере. Нужно проверить, как сервер отвечает поисковому роботу и что видит индекс.
- откройте проблемные URL и убедитесь, что они ведут на канонический адрес или отдают
noindex; - проверьте заголовки через
curl -Iили DevTools; - в Search Console отправьте на повторную проверку страницы, которые были закрыты ошибочно;
- посмотрите, исчезли ли дубли в отчёте по индексированию;
- убедитесь, что sitemap содержит только нужные URL.
Если вы добавляли noindex через wp_head, проверьте исходный код страницы: тег должен быть в HTML, а не только в визуальном просмотре темы.
Частые ошибки и как их исправить
Закрыли в robots.txt, но URL остался в индексе
Это ожидаемо. robots.txt не удаляет уже известные страницы из выдачи. Если нужно убрать URL из индекса, используйте noindex или 301-редирект на канонический адрес.
Поставили noindex на важные страницы
Такое часто случается с архивами категорий, которые реально приводят трафик. Перед массовым закрытием проверьте, какие архивы уже ранжируются и дают переходы. Если страница полезна пользователю и поиску, не закрывайте её автоматически.
Сделали редирект на главную для всех дублей
Это плохая практика. Поисковик быстро замечает нерелевантные редиректы, а пользователи получают не тот контент. Для медиа, архивов и параметров нужны разные сценарии.
Смешали каноникал, noindex и редирект без логики
Если страница отдаёт 301, каноникал на старый URL уже не нужен. Если страница остаётся доступной, но не должна индексироваться, тогда уместен noindex. Не используйте все методы одновременно без причины.
Практические советы по безопасности и производительности
Чистка дублей — это не только про SEO. Чем меньше мусорных URL, тем меньше лишних запросов к серверу и тем проще поддерживать сайт.
- не редактируйте
.htaccessчерез случайные плагины без бэкапа; - после правок очистите серверный и плагинный кэш, иначе вы будете проверять старую версию;
- если используете SEO-плагин, не дублируйте его правила ручным кодом без необходимости;
- проверяйте, не закрыли ли вы CSS, JS или REST API случайным правилом в
robots.txt; - для крупных сайтов сначала тестируйте изменения на staging-копии.
Если нужен более системный подход к чистке дублей, технических архивов и лишних мета-тегов, можно посмотреть в сторону инструментов вроде Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином полезно понимать, какие именно URL вы закрываете и зачем.
Когда лучше не трогать robots.txt вручную
Если сайт уже живёт на сложной связке плагинов, фильтров и кастомных таксономий, массовая правка robots.txt может дать побочный эффект. В таких случаях безопаснее сначала собрать список URL, которые реально индексируются, а потом закрывать их по одному типу.
Особенно осторожно стоит быть с:
- интернет-магазинами с фильтрами и сортировками;
- сайтами на мультиязычности;
- проектами, где архивы тегов используются как посадочные страницы;
- темами и плагинами, которые сами добавляют каноникал и
noindex.
Если после правок дубли не исчезают, проблема часто не в robots.txt, а в том, что у страницы есть несколько доступных маршрутов или неверно настроен канонический URL. Тогда нужно смотреть структуру permalink, редиректы и SEO-метки вместе, а не по отдельности.