В WordPress дубли чаще всего появляются не из-за «плохого SEO», а из-за штатной логики CMS: архивы тегов, авторов, дат, пагинация, страницы с параметрами, версии для печати, поиск по сайту. Если это не контролировать, поисковик тратит краулинговый бюджет на мусорные URL, а в индексе остаются страницы с одинаковым или почти одинаковым содержимым.
Ниже — рабочая схема: как найти источник дублей, что закрывать через noindex, что лучше отдавать с canonical, а что вообще отключать на уровне темы или плагина.
Как понять, что у вас именно проблема с дублями
Сначала не трогайте настройки вслепую. Проверьте, какие URL уже попали в индекс и чем они отличаются друг от друга. На практике дубли в WordPress обычно видны по таким признакам:
- в поиске есть страницы тегов, авторов и дат, хотя они не несут самостоятельной ценности;
- одна и та же запись открывается с разными параметрами URL;
- в индексе есть пагинация архивов, которая повторяет заголовки и фрагменты контента;
- поиск по сайту и служебные страницы доступны роботам;
- страницы с
?replytocom=, UTM и другими параметрами создают лишние адреса.
Быстрая диагностика в Google Search Console выглядит так: откройте отчет по страницам и посмотрите, какие типы URL индексируются чаще всего. Если видите много архивов тегов, авторов или параметрических адресов, это уже повод для настройки. Дополнительно проверьте сайт командой site:example.com и сравните заголовки страниц в выдаче.
Что проверять в первую очередь
- архивы
/tag/,/author/,/date/; - страницы пагинации
/page/2/,/page/3/; - поиск
?s=; - страницы вложений медиафайлов;
- URL с параметрами сортировки, фильтрации, трекинга;
- дубли главной страницы с разными вариантами слеша, http/https и www/non-www.
Что закрывать от индексации, а что оставлять
Не все дубли одинаковы. Если закрыть слишком много, можно случайно убрать из поиска полезные страницы. Если закрыть слишком мало, индекс захламится. Ниже — практическая развилка.
| Тип страницы | Что делать | Комментарий |
|---|---|---|
| Архивы тегов | Часто noindex, follow или отключение, если теговые страницы не нужны | Если теговые страницы дают трафик и уникальный текст, их можно оставить |
| Архивы авторов | Обычно noindex или редирект на страницу автора/о нас | Полезны только при сильной редакционной структуре |
| Архивы дат | Чаще отключают | Редко несут самостоятельную ценность |
| Поиск по сайту | noindex | Это служебная страница, не контентная |
| Пагинация архивов | Обычно оставляют доступной, но следят за canonical и качеством архивов | Не нужно массово закрывать все страницы пагинации без анализа |
| Страницы вложений | Редирект на файл или родительскую запись | Иначе в индексе появляются пустые страницы |
Если вам нужен быстрый и предсказуемый способ без ручного кода, можно использовать плагин для технической чистки, например Clearfy Pro: он закрывает типовые дубли, помогает убрать лишние архивы и служебные страницы. Но даже с плагином важно понимать, что именно вы отключаете, иначе легко сломать нужную индексацию. Ссылка: Clearfy Pro.
Пошаговое решение: закрываем дубли без лишнего риска
Шаг 1. Настройте базовую канонизацию
Проверьте, что сайт доступен в одной версии: только HTTPS, только один вариант домена, без лишних редирект-цепочек. Это не закрывает дубли полностью, но убирает техническую путаницу.
curl -I http://example.com/post-name/В ответе должен быть один понятный 301-редирект на канонический URL. Если цепочка длиннее одного шага, ее стоит сократить на уровне сервера или плагина редиректов.
Шаг 2. Отключите индексацию служебных архивов
Если вы используете SEO-плагин, проверьте настройки архивов: теги, авторы, даты, поисковые страницы. Для большинства проектов разумно закрыть то, что не дает самостоятельной ценности в поиске. Если плагин добавляет мета-тег noindex, убедитесь, что он реально присутствует в HTML-коде страницы.
Проверка в браузере или через curl:
curl -s https://example.com/tag/news/ | grep -i robotsВ выводе должен быть мета-тег вида <meta name="robots" content="noindex,follow"> или аналогичная директива, если вы выбрали именно такой вариант.
Шаг 3. Уберите страницы вложений
Страницы медиафайлов часто создаются автоматически и почти никогда не нужны в индексе. Правильнее либо редиректить их на родительскую запись, либо на сам файл, если это осознанный сценарий. В WordPress это можно сделать через код в теме или через плагин, который умеет отключать attachment pages.
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;
}
}
});Этот вариант безопаснее, чем оставлять пустые attachment-страницы в индексе. Но если у вас медиафайлы используются как отдельные посадочные страницы, редирект нужно тестировать отдельно.
Шаг 4. Закройте поиск и параметры URL
Страницы поиска ?s= почти всегда должны быть noindex. Параметры сортировки, фильтрации и трекинга лучше не пускать в индекс вообще. Если параметры создают дубли контента, настройте canonical на основную версию страницы.
Для точечных случаев можно добавить canonical вручную:
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});Но если у вас уже стоит SEO-плагин, не дублируйте его логику вручную без необходимости. Два источника мета-тегов часто создают конфликт.
Когда лучше править кодом, а когда плагином
Если задача типовая и касается нескольких стандартных архивов, плагин удобнее: меньше шансов сломать шаблон и проще поддерживать. Если проблема точечная — например, нужно закрыть только определенный тип записей, кастомную таксономию или параметры URL — код дает больше контроля.
Коротко по выбору:
- Плагин — когда нужно быстро закрыть стандартные дубли и не лезть в шаблоны;
- Код — когда нужно точечно управлять логикой для конкретного проекта;
- Комбинация — когда плагин закрывает базу, а код решает редкие исключения.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой. Нужно убедиться, что поисковик видит именно то, что вы задумали.
- Откройте несколько закрытых страниц и проверьте исходный код на наличие
noindex. - Проверьте canonical на основных страницах и архивных URL.
- Прогоните пару адресов через
curl -I, чтобы увидеть редиректы и статус-коды. - В Search Console отправьте на повторную проверку страницы, где меняли индексацию.
- Через несколько дней сравните список проиндексированных URL и посмотрите, уменьшилось ли количество служебных адресов.
Если вы закрыли архивы тегов, но они все еще появляются в индексе, это не всегда ошибка. Поисковик может держать старые URL какое-то время. Важнее, чтобы новые обходы уже видели правильные директивы.
Частые ошибки и как их исправить
Закрыли URL в robots.txt и забыли про canonical
Если страница уже в индексе, один только Disallow не всегда убирает ее оттуда быстро. Поисковик может видеть URL, но не иметь доступа к содержимому. Для уже индексируемых дублей обычно полезнее noindex или редирект, а robots.txt использовать для обхода, а не как единственный инструмент.
Поставили noindex на полезные архивы
Такое часто случается с тегами и авторскими страницами, которые реально дают трафик. Перед закрытием проверьте статистику по страницам и спросите себя, есть ли у архива уникальная ценность. Если есть — лучше доработать контент архива, чем бездумно закрывать его.
Сломали пагинацию
Иногда после настройки SEO-плагина страницы /page/2/ начинают отдавать неправильный canonical на первую страницу. Это плохо для больших архивов. Проверьте, что пагинация не ведет на нерелевантный URL и не превращается в цепочку редиректов.
Оставили дубли от медиафайлов
Attachment pages часто забывают, потому что они не видны в обычной навигации. Но поисковик их находит по внутренним ссылкам и через карту сайта, если она настроена неаккуратно. Решение — редирект или отключение страниц вложений.
Практические советы по безопасности и производительности
Чем меньше мусорных URL генерирует сайт, тем меньше лишней работы у сервера и краулера. Это не «ускорение в разы», а нормальная техническая гигиена. Уберите из карты сайта служебные страницы, проверьте, что в ней нет архивов, которые вы закрыли от индексации, и не плодите лишние шаблоны под один и тот же контент.
Если вы правите кодом, не вносите изменения прямо в родительскую тему. Используйте дочернюю тему или небольшой mu-plugin, чтобы настройка не слетела после обновления. И обязательно сохраняйте список того, что закрыли: через полгода это сильно упрощает аудит.
// Пример: точечное отключение индексации поиска и архивов дат
add_action('wp_head', function () {
if (is_search() || is_date()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});Такой код стоит использовать только если вы понимаете, как он сочетается с SEO-плагином. Если плагин уже управляет robots-метатегами, лучше оставить один источник правды, иначе в HTML можно получить конфликтующие директивы.