Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, пагинация, параметры в URL, версии с www и без, HTTP/HTTPS, служебные страницы плагинов, а иногда и из-за темы, которая выводит один и тот же контент в нескольких шаблонах. В итоге поисковик видит несколько адресов с одинаковым или почти одинаковым содержимым и начинает выбирать канонический URL не так, как вы ожидаете.
Ниже разберём практический сценарий: как быстро диагностировать дубли, что править в WordPress, где достаточно canonical, а где нужен редирект 301. Без лишней теории — только то, что можно проверить на живом сайте.
Как понять, что у вас именно дубли, а не просто падение трафика
Первый признак — в поиске индексируются адреса, которые вы не считали основными: версии с параметрами, страницы пагинации, вложенные архивы, дубли главной на /index.php или с разным протоколом. Второй признак — в Google Search Console одна и та же страница фигурирует под несколькими URL, а в отчёте по индексированию растёт число «Дубли, Google выбрал другой канонический URL».
Быстрая диагностика руками
- Откройте страницу в нескольких вариантах:
https://site.ru/page/,https://www.site.ru/page/,http://site.ru/page/. - Проверьте исходный код на наличие
<link rel="canonical">. - Посмотрите, не открывается ли та же запись через архив рубрики, тег, автора или поиск по сайту.
- Проверьте URL с параметрами:
?replytocom=,?utm_source=,?amp, если такие параметры реально используются на сайте.
Если страница доступна по нескольким адресам и при этом отдает 200 OK без редиректа, это уже кандидат на дубль. Если адреса отличаются только параметрами, иногда достаточно canonical, но не всегда.
Что именно нужно исправить в WordPress
Сначала разделите проблему на три слоя: технические дубли, контентные дубли и дубли из-за шаблонов темы или плагинов. Для каждого слоя решение разное.
| Подход | Когда подходит | Минус |
|---|---|---|
| 301-редирект | HTTP→HTTPS, www→без www, старые URL, лишние версии страниц | Нужно аккуратно тестировать, чтобы не создать цепочки |
rel=canonical | Параметры, сортировки, фильтры, похожие страницы | Не убирает дубль из обхода, только подсказывает поисковику |
| Запрет индексации | Служебные страницы, внутренний поиск, некоторые архивы | Если переборщить, можно потерять полезные страницы |
Шаг 1. Приведите сайт к одному основному адресу
В Настройки → Общие проверьте, чтобы Адрес WordPress (URL) и Адрес сайта (URL) были в одном формате: с HTTPS и с выбранным вариантом домена. Если сайт должен работать только на HTTPS, не оставляйте старый HTTP-адрес «на всякий случай».
Если нужен принудительный редирект на одну версию домена, это лучше делать на уровне сервера или через .htaccess. Для Apache базовый вариант выглядит так:
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^ https://site.ru%{REQUEST_URI} [L,R=301]Для Nginx логика та же, но синтаксис другой. Если редирект уже есть в конфиге хостинга, не дублируйте его в плагине — получите цепочку или петлю.
Шаг 2. Уберите дубли от параметров и служебных URL
Параметры вроде ?utm_* обычно не создают отдельную страницу для пользователя, но поисковик может увидеть их как отдельные URL. Для таких случаев canonical обычно достаточно. А вот служебные страницы — поиск по сайту, результаты фильтров, внутренние предпросмотры — часто лучше закрывать от индексации или отдавать canonical на основную страницу.
Если проблема возникает из-за комментариев с ?replytocom=, проверьте, не генерирует ли тема или плагин ссылки на такие адреса. На современных сайтах это часто уже не нужно.
Шаг 3. Настройте canonical там, где редирект неуместен
Canonical нужен, когда страницы похожи, но не идентичны по смыслу: сортировка каталога, пагинация, версии с параметрами, фильтры. В WordPress многие SEO-плагины умеют ставить canonical автоматически, но важно проверить, не ломает ли тема вывод заголовка или не подменяет ли canonical вручную.
Если нужно задать canonical для конкретной записи или страницы программно, можно использовать фильтр wpseo_canonical в Yoast SEO или аналогичный механизм вашего SEO-плагина. Но если вы не уверены, лучше не вмешиваться в SEO-логику точечно, а сначала найти источник дубля.
Диагностика через код: как найти лишние URL в шаблонах
Иногда дубли создаёт сама тема: один и тот же контент выводится в нескольких шаблонах, а ссылки строятся вручную и отличаются только хвостом. В таком случае полезно быстро проверить, какие URL реально генерируются на странице.
<?php
// Временно вставьте в шаблон или в mu-plugin для диагностики.
add_action('wp_footer', function () {
if (!current_user_can('manage_options')) {
return;
}
global $post;
if (!$post) {
return;
}
echo '<!-- current URL: ' . esc_url(home_url(add_query_arg(array(), $GLOBALS['wp']->request))) . ' -->';
echo '<!-- permalink: ' . esc_url(get_permalink($post)) . ' -->';
});Этот приём не решает проблему сам по себе, но помогает увидеть, не подставляет ли тема неправильный permalink или не создаёт ли лишние ссылки в хлебных крошках, блоках похожих записей и меню.
Пошаговое решение без риска сломать индексацию
- Соберите список дублей из Search Console, логов сервера, Screaming Frog или аналогичного краулера.
- Разделите URL на группы: технические версии домена, параметры, архивы, пагинация, служебные страницы.
- Для технических дублей ставьте 301: HTTP→HTTPS, www→без www, старые slug после смены адреса.
- Для похожих страниц используйте canonical: фильтры, сортировки, параметры, страницы с одинаковым ядром контента.
- Для служебных страниц ограничьте индексацию через настройки SEO-плагина или robots meta, если это оправдано.
- Проверьте внутренние ссылки: меню, хлебные крошки, блоки похожих материалов, sitemap.
Если вы используете плагин для SEO, не включайте сразу несколько механизмов одновременно «на всякий случай». Например, редирект, canonical и noindex на один и тот же URL могут дать непредсказуемое поведение в индексации.
Проверка результата после внедрения
После правок важно не гадать, а проверить фактическое поведение URL.
- Откройте основной адрес и убедитесь, что он отдаёт
200 OK. - Проверьте старые версии URL: они должны отдавать
301на нужный адрес, а не200. - Посмотрите исходный код: canonical должен указывать на основной URL.
- Проверьте карту сайта: в ней не должно быть служебных и дубль-адресов.
- В Search Console отправьте на переобход ключевые страницы и отслеживайте отчёт по каноническим URL.
Для быстрой проверки с сервера удобно использовать curl:
curl -I https://www.site.ru/page/
curl -I https://site.ru/page/
curl -I http://site.ru/page/Если в ответе на старый URL вы видите 301 Moved Permanently и корректный Location, базовая часть задачи решена. Если старый адрес всё ещё отдаёт 200, значит редирект не сработал или его перебивает другой слой — плагин, CDN или конфиг хостинга.
Частые ошибки и как их исправить
Редирект сделан в нескольких местах
Типичная ситуация: редирект есть в .htaccess, в плагине и ещё на стороне CDN. В результате появляются цепочки или петли. Оставьте один источник истины: сервер или CDN, а в WordPress — только то, что действительно относится к контенту.
Canonical указывает на несуществующую страницу
Это бывает после смены slug или удаления записи. Поисковик получает сигнал на URL, который уже 404. Проверьте, что canonical всегда ведёт на живую страницу с 200 OK.
Noindex поставили на важный архив
Иногда закрывают от индексации рубрики, которые реально собирают трафик и помогают структуре сайта. Не стоит автоматически закрывать всё подряд. Сначала оцените, есть ли у архива поисковый спрос и внутренний вес.
Дубли создаёт тема через одинаковые шаблоны
Например, один и тот же пост выводится и в архиве автора, и в рубрике, и в блоке «похожие записи», а ссылки строятся с разными параметрами. Здесь нужно править шаблон, а не только SEO-настройки. Если тема устаревшая, иногда быстрее заменить проблемный блок на стандартный вывод WordPress.
Практические советы по безопасности и производительности
Чем больше редиректов и SEO-логики вы добавляете в плагины, тем выше шанс получить лишнюю нагрузку и конфликт после обновления. Для массовых редиректов лучше использовать серверный уровень. Для точечных правил — аккуратный код в mu-plugin или проверенный SEO-плагин.
Если на сайте много дублей из-за архивов, фильтров и служебных страниц, имеет смысл отдельно пересмотреть структуру контента. Иногда проблему проще уменьшить, чем бесконечно лечить последствия. В таких задачах полезны инструменты для чистки дублей и SEO-настроек, например Clearfy Pro, если он уже используется в вашем стеке: https://wpshop.ru/plugins/clearfy.
Но даже с плагином не отключайте проверку вручную. Любое массовое изменение URL нужно подтверждать ответами сервера и отчётами поисковой консоли, а не только галочкой в админке.