wpshab.ru wordpress wpshab.ru

Как исключить параметры URL из индексации в WordPress без потери нужных страниц

Если в индексе начали появляться адреса вида ?utm_source=, ?replytocom=, ?sort= или внутренние параметры фильтров, проблема обычно не в одном теге noindex. Чаще всего WordPress уже отдает несколько вариантов одной и той же страницы, а поисковик сам выбирает, что считать каноническим. В итоге в отчётах растут дубли, а нужные страницы теряют сигнал.

Ниже — рабочая схема, которая помогает разделить параметры на три группы: те, что надо игнорировать поиску, те, что должны оставаться доступными, и те, что лучше вообще не пускать в индекс. Подход рассчитан на обычный WordPress-сайт: блог, корпоративный проект, медиа, каталог без сложной e-commerce-логики.

Когда проблема действительно в параметрах URL

Сначала стоит убедиться, что вы боретесь именно с параметрами, а не с другой причиной дублей. Типичный симптом — в поиске и в панели вебмастеров появляются адреса одной и той же страницы с разными хвостами. Например, /article/?utm_source=telegram, /article/?replytocom=12, /category/news/?sort=popular. При этом контент на странице не меняется или меняется незначительно.

Что проверить в первую очередь

  • Откройте проблемный URL с параметром и без него: контент, title и canonical должны совпадать там, где параметр не влияет на страницу.
  • Посмотрите исходный код страницы: есть ли корректный rel="canonical".
  • Проверьте, не создаёт ли параметр отдельную страницу в sitemap, если у вас есть кастомная генерация карты сайта.
  • Сравните ответы сервера для URL с параметром и без: иногда редирект уже решает проблему без дополнительных правок.

Если параметр нужен только для аналитики, а не для контента, его почти всегда можно убрать из индексации. Если параметр меняет выдачу внутри сайта, например сортировку или фильтр, решение зависит от того, должен ли этот вариант ранжироваться отдельно.

Какой подход выбрать: canonical, noindex или редирект

Здесь важна не «магическая» настройка, а логика страницы. Один и тот же параметр может требовать разного поведения в разных проектах. Для ориентира удобнее смотреть на задачу, а не на инструмент.

СценарийЧто делатьКомпромисс
UTM-метки, кликовые метки, параметры аналитикиОставить страницу доступной, указать canonical на чистый URLПараметр не должен менять контент
replytocom, служебные параметры комментариевСтавить canonical на основную страницу и при необходимости закрывать от индексацииНужно проверить темы и плагины комментариев
Сортировка и фильтры, которые не должны индексироватьсяnoindex, follow или canonical на основную категориюПоисковик может дольше переобходить старые URL
Служебные параметры, которые не нужны пользователю301-редирект на чистый URL, если это безопасноМожно потерять часть аналитических разметок в URL

Если параметр не влияет на содержимое, редирект часто лучше, чем попытка «лечить» его только метатегами. Но редирект нельзя ставить вслепую: если по параметру реально строится полезная страница, вы сломаете навигацию и внутренние ссылки.

Пошаговое решение для WordPress

1. Сначала уберите мусорные параметры на уровне ссылок

Если параметры появляются из-за шаблона, кнопок шаринга или UTM в меню, лучше не плодить их внутри сайта. Для внутренних ссылок используйте чистые адреса, а метки оставляйте только для внешних кампаний. Это банально, но часто именно здесь начинается лавина дублей.

2. Добавьте canonical для страниц с параметрами

Если у вас уже есть страницы с параметрами, canonical должен указывать на чистую версию URL. В WordPress это можно сделать через wp_head, если вам нужен точечный контроль для конкретных параметров.

<?php
add_action( 'wp_head', function () {
    if ( empty( $_GET ) ) {
        return;
    }

    $allowed = array( 'utm_source', 'utm_medium', 'utm_campaign' );
    $keys    = array_keys( $_GET );
    $diff    = array_diff( $keys, $allowed );

    if ( empty( $diff ) ) {
        return;
    }

    $url = home_url( add_query_arg( array(), $GLOBALS['wp']->request ) );
    echo '<link rel="canonical" href="' . esc_url( $url ) . '" />' . "
";
}, 20 );

Этот пример намеренно простой: он не пытается «умно» собирать все варианты URL, а показывает идею. На практике лучше проверять конкретные параметры и не трогать те, которые нужны для функциональности сайта.

3. Закройте служебные параметры от индексации

Для параметров, которые не должны индексироваться, можно отдать noindex, follow на уровне заголовка или метатега. Если у вас уже есть SEO-плагин, проверьте, не делает ли он это сам. Дублировать логику в теме и в плагине — частая ошибка.

<?php
add_action( 'wp_head', function () {
    if ( isset( $_GET['replytocom'] ) || isset( $_GET['sort'] ) ) {
        echo '<meta name="robots" content="noindex,follow" />' . "
";
    }
}, 1 );

Такой вариант подходит только если вы точно понимаете, какие параметры хотите закрыть. Не используйте его для всех query string подряд: UTM-метки, например, обычно не требуют noindex, если canonical уже указывает на чистый URL.

4. При необходимости ставьте редирект на чистый адрес

Если параметр не нужен для работы сайта, безопаснее убрать его редиректом. Для этого лучше использовать template_redirect, а не пытаться переписывать URL на уровне шаблона.

<?php
add_action( 'template_redirect', function () {
    if ( is_admin() ) {
        return;
    }

    if ( isset( $_GET['replytocom'] ) ) {
        wp_safe_redirect( remove_query_arg( 'replytocom' ), 301 );
        exit;
    }
} );

Не делайте 301 для всех параметров без разбора. Например, если у вас фильтр каталога или сортировка в архиве, такой редирект сломает пользовательский сценарий.

Если нужен быстрый путь без кода

Когда сайт ведётся без разработчика, часть задач можно закрыть через SEO-плагин и настройки сервера. Это не отменяет проверки canonical и редиректов, но снижает риск ошибок в теме.

  • Проверьте, умеет ли ваш SEO-плагин задавать robots-правила для архивов и параметров.
  • Если параметры создаёт комментарийный функционал, отключите лишние ссылки на replytocom в теме или плагине комментариев.
  • Для массовой чистки технических дублей полезно использовать инструменты, которые умеют убирать лишние элементы из head и настраивать canonical. Например, в Clearfy Pro есть набор функций для технической оптимизации и удаления дублей: https://wpshop.ru/plugins/clearfy.

Плагин не заменяет логику. Он помогает, если у вас типовой кейс и нужно быстро привести сайт в порядок без ручной доработки шаблона.

Как проверить, что решение сработало

После внедрения не ограничивайтесь визуальной проверкой в браузере. Нужны три уровня контроля: HTML, ответ сервера и данные в вебмастере.

  1. Откройте URL с параметром и проверьте исходный код: canonical должен вести на чистую страницу, а robots — соответствовать выбранной логике.
  2. Проверьте HTTP-ответ через DevTools или curl -I: если вы ставили редирект, он должен быть 301 и вести на правильный адрес.
  3. В панели вебмастера отправьте на переобход несколько проблемных URL и посмотрите, как они классифицируются через несколько обходов.

Для быстрой проверки на сервере можно использовать такую команду:

curl -I "https://example.com/article/?replytocom=12"

Если вы выбрали canonical без редиректа, ответ должен оставаться 200, но canonical в HTML — указывать на чистый URL. Если выбрали 301, в ответе не должно быть цепочки редиректов.

Частые ошибки и как их исправить

Canonical указывает на себя вместе с параметром

Это происходит, когда шаблон строит canonical из текущего запроса, не очищая query string. В результате поисковик видит отдельный URL как самостоятельную страницу. Исправление простое: canonical должен формироваться из базового адреса без технических параметров.

Noindex ставят на все параметры подряд

Так делают, когда хотят быстро «почистить индекс», но потом теряют полезные страницы с фильтрами или сортировкой. Если параметр влияет на контент и нужен пользователю, сначала проверьте, не должен ли он оставаться индексируемым.

Редирект ломает аналитику и внутренние сценарии

Если вы перенаправляете все URL с query string на главную или на чистую страницу без разбора, можно сломать формы, поиск, сортировку и UTM-атрибуцию. Редирект должен быть точечным и только для тех параметров, которые действительно служебные.

Параметры закрыли в robots.txt, но дубли остались

Это ожидаемо: robots.txt не убирает уже известные поисковику URL из индекса сам по себе. Если страница уже попала в индекс, нужны canonical, noindex или редирект. Robots.txt здесь — вспомогательный инструмент, а не основное решение.

Практические советы по безопасности и производительности

Любая логика обработки параметров — это ещё и вопрос стабильности. Чем больше исключений вы добавляете в functions.php, тем выше шанс конфликта с темой или плагином. Лучше держать такие правки в дочерней теме или в небольшом mu-plugin, если проект поддерживается регулярно.

  • Не используйте сырые значения из $_GET без проверки и экранирования.
  • Не строите canonical вручную через конкатенацию строк, если можно использовать функции WordPress для URL.
  • Не закрывайте от индексации страницы, которые участвуют в навигации или фильтрации важного контента без теста на реальном трафике.
  • Если параметров много, сначала составьте список и разделите их по назначению: аналитика, комментарии, сортировка, фильтры, служебные хвосты.

Когда задача выходит за рамки одной правки, удобно сначала навести порядок в технических дублях и служебных элементах сайта, а уже потом заниматься точечными правилами для параметров. Это снижает риск, что вы «почините» одно место и сломаете другое.

Если нужен более системный набор инструментов для технической чистки WordPress, посмотрите Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином проверка canonical, редиректов и ответов сервера остаётся обязательной.

×
Сделай WordPress мощнее!

Скидка -20% на топовые премиум плагины

Выбрать плагин сейчас ⋙