Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, пагинация, версии с www и без, HTTP/HTTPS, параметры сортировки, страницы вложений, а иногда и дублирующиеся записи из-за шаблона или плагина. Проблема в том, что поисковик видит несколько адресов с одинаковым или почти одинаковым содержимым и начинает распылять сигналы. В итоге в индексе остаётся не тот URL, который вы хотели продвигать.
Ниже разберём не абстрактную теорию, а рабочий сценарий: как быстро найти источник дублей, что исправить в WordPress и как проверить, что после правки поисковый робот видит только нужную версию страницы.
Как понять, что дубли уже есть
Первый признак — в поиске всплывают неканонические адреса: страницы вложений, URL с параметрами, адреса с /page/2/ вместо основной статьи, версии с www и без, а иногда и архивы автора, которые повторяют ленту блога. Второй признак — в Google Search Console или Яндекс.Вебмастере растёт число страниц, которые не должны индексироваться, либо поисковик выбирает другой canonical, чем вы ожидаете.
Быстрая диагностика без плагинов
Начните с простых проверок. Они не заменяют аудит, но быстро показывают, где искать проблему:
- откройте одну и ту же страницу с
httpиhttps; - проверьте вариант с
wwwи без него; - посмотрите, не открывается ли страница вложения медиафайла;
- проверьте пагинацию архивов и рубрик;
- посмотрите исходный код страницы и найдите тег
rel="canonical".
Если canonical указывает на другой URL, чем адрес в браузере, это не всегда ошибка. Но если canonical ведёт на страницу с параметрами или на дубликат, это уже повод править шаблон или настройки SEO-плагина.
Какие дубли WordPress встречаются чаще всего
У WordPress есть несколько типовых источников дублей. Их удобно разделить на технические и контентные. Технические — это разные URL для одного и того же материала. Контентные — когда одна и та же статья или товарная карточка повторяется в нескольких местах сайта.
| Источник | Что происходит | Что делать |
|---|---|---|
| HTTP/HTTPS, www/без www | Одна и та же страница доступна по нескольким адресам | Сделать один основной вариант и настроить 301-редирект |
| Страницы вложений | Медиафайл получает отдельную страницу с тонким или пустым контентом | Редиректить attachment URL на файл или родительскую запись |
| Архивы тегов и категорий | Один и тот же пост появляется в нескольких архивах | Оставить нужные архивы в индексе, остальные закрыть или ограничить |
| Параметры в URL | Сортировка, фильтры, UTM и другие параметры создают новые адреса | Закрыть от индексации или нормализовать canonical |
Пошаговое решение: убираем дубли на уровне WordPress
1. Приведите сайт к одной основной версии домена
Если сайт открывается и по http, и по https, а также с www и без него, сначала решите это на уровне сервера. WordPress не должен быть единственным слоем защиты. Идея простая: все варианты должны вести на один канонический адрес через 301.
В wp-config.php и настройках сайта проверьте значения WP_HOME и WP_SITEURL, если они заданы вручную. Они должны совпадать с основной версией домена:
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');Если у вас уже есть редиректы на уровне nginx или Apache, не дублируйте их в нескольких местах без необходимости. Двойной редирект часто создаёт цепочку и замедляет загрузку.
2. Отключите индексацию ненужных архивов и служебных страниц
Не все архивы должны быть в поиске. На небольших сайтах часто нет смысла индексировать архивы автора, если автор один. То же касается страниц вложений, служебных страниц поиска и некоторых таксономий, которые повторяют основной контент.
Если вы используете SEO-плагин, настройте индексацию там. Если работаете кодом, можно закрыть отдельные типы архивов через noindex в шаблоне или через фильтры конкретного плагина. Но не смешивайте подходы: либо управляете этим в SEO-плагине, либо в теме, иначе потом трудно понять, кто именно добавил мета-теги.
3. Редиректите страницы вложений
Страницы вложений — частый источник тонких дублей. Пользователь кликает на изображение, WordPress открывает отдельную страницу attachment, а поисковик получает ещё один URL с почти пустым содержимым. Если такие страницы не нужны, их лучше редиректить.
Ниже пример для functions.php или мини-плагина. Он отправляет посетителя со страницы вложения на родительскую запись, а если родителя нет — на сам файл:
add_action('template_redirect', function () {
if (!is_attachment()) {
return;
}
$attachment_id = get_queried_object_id();
$parent_id = wp_get_post_parent_id($attachment_id);
if ($parent_id) {
wp_redirect(get_permalink($parent_id), 301);
exit;
}
$file_url = wp_get_attachment_url($attachment_id);
if ($file_url) {
wp_redirect($file_url, 301);
exit;
}
});Это не универсальная магия: если у вас медиа-страницы используются как полноценные посадочные, редирект делать не нужно. Но для большинства контентных сайтов это полезная чистка.
4. Нормализуйте canonical для страниц с параметрами
Параметры сортировки, фильтры и UTM-метки часто создают дубли. Поисковику не нужно индексировать каждую комбинацию параметров, если это одна и та же страница. В идеале canonical должен указывать на чистый URL без лишних параметров.
Если у вас есть собственный шаблон или плагин, можно принудительно убрать параметры из canonical. Пример ниже показывает базовую идею для фронтенда: canonical строится без query string.
add_filter('get_canonical_url', function ($canonical, $post) {
if (empty($canonical)) {
return $canonical;
}
$parts = wp_parse_url($canonical);
if (empty($parts['scheme']) || empty($parts['host'])) {
return $canonical;
}
$clean = $parts['scheme'] . '://' . $parts['host'];
if (!empty($parts['path'])) {
$clean .= $parts['path'];
}
return $clean;
}, 10, 2);Этот пример стоит использовать аккуратно. Если canonical уже формируется SEO-плагином, сначала проверьте его настройки, а не добавляйте второй слой логики поверх первого.
5. Закройте или ограничьте архивы, которые повторяют основной контент
На новостных и контентных сайтах часто дублируются рубрики, теги и архивы автора. Сам по себе архив не ошибка, но если он почти полностью повторяет ленту, поисковику проще выбрать не ту страницу. Здесь есть три варианта: оставить в индексе, закрыть от индексации или сделать noindex, follow.
Если архивы не несут самостоятельной ценности, не пытайтесь «продавить» их в поиск. Лучше оставить только те, которые реально помогают навигации и собирают уникальные подборки.
Когда лучше использовать плагин, а когда код
Если задача сводится к настройке canonical, noindex и редиректов, SEO-плагин обычно быстрее и безопаснее для редактора. Если же дубли появляются из-за темы, кастомного шаблона или нестандартной логики URL, без кода не обойтись.
| Подход | Плюсы | Минусы |
|---|---|---|
| SEO-плагин | Быстрая настройка, меньше риска сломать шаблон | Не решает ошибки темы и сервера |
| Код в теме/плагине | Точный контроль над редиректами и canonical | Нужна проверка после обновлений |
| Серверный редирект | Работает до загрузки WordPress, меньше лишних запросов | Требует доступа к конфигу nginx/Apache |
Если у вас уже стоит Clearfy Pro, часть задач по дублям и чистке сайта можно закрыть через него, но всё равно стоит понимать, какие именно URL он трогает и как это влияет на индексацию. Автоматическая настройка без проверки иногда даёт обратный эффект.
Проверка результата после внедрения
После правок не ограничивайтесь открытием страницы в браузере. Проверьте именно то, что видит робот.
- Откройте старый URL и убедитесь, что он отдаёт
301, а не200. - Проверьте заголовок
Locationв ответе сервера. - Посмотрите исходный код страницы и убедитесь, что canonical указывает на нужный адрес.
- Проверьте, не осталось ли в индексе страниц вложений и параметрических URL.
- В Search Console отправьте на переобход важные страницы после массовых правок.
Для быстрой проверки из консоли удобно использовать curl:
curl -I https://example.com/old-page/В ответе должен быть статус редиректа и новый адрес в Location. Если видите цепочку из нескольких редиректов, сокращайте её до одного шага.
Частые ошибки и как их исправить
Редирект сделан, но дубль остаётся в индексе
Это нормально в краткосрочной перспективе: поисковику нужно время, чтобы переобойти URL. Но если старый адрес продолжает активно сканироваться, проверьте внутренние ссылки. Часто проблема не в редиректе, а в том, что меню, хлебные крошки, карта сайта или шаблон продолжают ссылаться на старую версию.
Canonical и редирект указывают на разные адреса
Так делать не стоит. Canonical должен поддерживать ту же логику, что и редирект. Если canonical ведёт на один URL, а сервер отправляет на другой, поисковик получает противоречивые сигналы.
Закрыли всё через noindex и потеряли полезные страницы
Это частая ошибка при массовой чистке. Не закрывайте архивы и таксономии «на всякий случай». Сначала проверьте, есть ли у них трафик, внешние ссылки и реальная навигационная ценность.
Сломали медиа-страницы, которые использовались в контенте
Если attachment URL был частью старой структуры сайта, редирект может изменить поведение ссылок. Перед массовой правкой посмотрите, есть ли входящий трафик на такие страницы и используются ли они в публикациях.
Практические советы по безопасности и производительности
Не вносите редиректы и фильтры canonical прямо в рабочую тему без резервной копии. Лучше вынести логику в небольшой mu-plugin или отдельный мини-плагин: так правка не исчезнет при смене темы и её проще отключить, если что-то пошло не так.
Если дублей много, не пытайтесь исправить всё за один проход. Сначала уберите самые вредные источники: доменные дубли, attachment pages, параметрические URL и явные ошибки canonical. Потом уже переходите к архивам и тонкой настройке индексации.
И ещё один практический момент: после массовых редиректов проверьте логи сервера и карту сайта. Если в sitemap остались старые URL, поисковик будет продолжать их обходить, даже если на сайте они уже редиректятся.
Когда нужна не точечная правка, а системная чистка дублей и технического мусора, удобнее сначала составить список проблемных URL, а потом уже решать, что закрывать, что редиректить, а что оставлять в индексе. Такой порядок экономит время и снижает риск случайно убрать нужные страницы.