wpcompany.ru wordpress WPCompany

Как настроить noindex для страниц с параметрами в WordPress

Страницы с параметрами в URL — типичная причина мусорной индексации: ?sort=, ?filter=, ?utm_, ?replytocom=, внутренний поиск, пагинация с лишними параметрами. Проблема не в самих параметрах, а в том, что поисковик начинает воспринимать такие URL как отдельные страницы. В итоге в индексе появляются дубли, а краулинговый бюджет уходит на бесполезные адреса.

Ниже — рабочий сценарий: как диагностировать проблему, какие URL действительно стоит закрывать, и как сделать это через код или SEO-плагин без риска случайно выкинуть из индекса нужные страницы.

Когда параметры в URL становятся проблемой

Не каждый URL с параметром нужно закрывать. Например, ?replytocom= почти всегда создаёт дубли, а ?utm_source= обычно нужен только для аналитики и не должен индексироваться. А вот страницы фильтров в каталоге, сортировки, внутреннего поиска и технических параметров часто плодят десятки почти одинаковых URL.

Типичные сценарии

  • страницы сортировки: ?sort=price_asc;
  • фильтры по атрибутам: ?color=black&size=m;
  • пагинация с параметрами: ?page=2 или комбинации с фильтрами;
  • служебные параметры: ?replytocom=123, ?amp, ?fbclid;
  • внутренний поиск: ?s=ключевое+слово.

Если такие страницы уже попали в индекс, одного noindex мало: нужно ещё убрать причину появления дублей и проверить, что канонический URL указывает на основную страницу.

Диагностика: какие параметры уже индексируются

Сначала не меняйте настройки вслепую. Посмотрите, какие URL реально попали в поиск и как они выглядят в логике сайта.

  1. В Google Search Console откройте отчёт по страницам и найдите URL с параметрами.
  2. Проверьте, есть ли у них канонический URL без параметров.
  3. Сравните содержимое страницы с параметрами и основной страницы: если текст и блоки одинаковые, это почти наверняка дубль.
  4. Посмотрите, не используются ли параметры для критичных сценариев: корзина, авторизация, фильтр в каталоге, который нужен пользователю.

Если у вас есть доступ к серверным логам, полезно посмотреть, как часто бот ходит по таким адресам. Это помогает понять, стоит ли закрывать только индексацию или ещё и ограничивать обход.

Что лучше: noindex, canonical или robots.txt

Для параметров часто путают три разных инструмента. Они решают разные задачи.

ПодходКогда использоватьМинус
noindexстраница доступна, но не должна попадать в индексботу всё равно нужно зайти на страницу, чтобы увидеть мета-тег
rel=canonicalесть дубль, который должен указывать на основную страницуне всегда срабатывает, если страницы сильно отличаются
robots.txtнужно ограничить обход технических URLесли закрыть слишком рано, поисковик не увидит noindex и canonical

На практике для параметров чаще всего используют связку: noindex,follow на самих страницах + canonical на основную версию + при необходимости правила в robots.txt для совсем технических адресов.

Решение через код: ставим noindex для URL с параметрами

Если у вас кастомная тема или вы не хотите зависеть от настроек SEO-плагина, можно добавить условный noindex в <head>. Ниже пример для дочерней темы или небольшого mu-plugin.

<?php
add_action('wp_head', function () {
    if (is_admin() || is_feed()) {
        return;
    }

    $params = array_keys($_GET);
    if (empty($params)) {
        return;
    }

    $blocked_params = array('sort', 'filter', 'color', 'size', 'replytocom', 's');
    $matched = array_intersect($params, $blocked_params);

    if (!empty($matched)) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
}, 1);

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

Если нужно закрывать только конкретные шаблоны

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

<?php
add_action('wp_head', function () {
    if (is_admin() || is_feed()) {
        return;
    }

    if (is_search()) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
        return;
    }

    if (is_tax('product_cat') && !empty($_GET['filter'])) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
}, 1);

Такой подход лучше, если параметры используются по-разному на разных разделах сайта. Он снижает риск случайно закрыть полезные страницы.

Как сделать canonical для страниц с параметрами

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

<?php
add_filter('get_canonical_url', function ($canonical, $post) {
    if (is_admin() || empty($_GET)) {
        return $canonical;
    }

    $remove = array('utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid');
    $current = home_url(add_query_arg(array_diff_key($_GET, array_flip($remove)), ''));

    if (!empty($current)) {
        return remove_query_arg(array_keys($_GET), $canonical);
    }

    return $canonical;
}, 10, 2);

На практике canonical лучше не усложнять. Если у вас уже есть SEO-плагин, проверьте, умеет ли он сам формировать канонический URL для страниц с параметрами. Вручную имеет смысл вмешиваться только там, где стандартное поведение плагина не подходит.

Пошаговая настройка без поломки индексации

  1. Составьте список параметров, которые создают дубли.
  2. Проверьте, не используются ли они в критичных сценариях сайта.
  3. Добавьте noindex,follow только для нужных шаблонов или параметров.
  4. Убедитесь, что canonical указывает на основную страницу без параметров.
  5. Если есть технические URL, добавьте их в robots.txt только после проверки, что поисковик уже видит нужные мета-теги.
  6. Отправьте на переобход основные страницы и дождитесь обновления в Search Console.

Чек-лист перед публикацией изменений

  • На страницах с параметрами появился <meta name="robots" content="noindex,follow" />.
  • Основные страницы без параметров остались индексируемыми.
  • Canonical ведёт на чистый URL.
  • Внутренний поиск не закрыт случайно, если он нужен для навигации.
  • Фильтры каталога не ломают пользовательский сценарий.
  • В sitemap не попали технические URL с параметрами.

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

Проверка должна быть не только визуальной. Откройте несколько URL с параметрами и посмотрите исходный код страницы: в <head> должен быть нужный robots-мета-тег. Затем проверьте canonical и сравните его с чистым URL.

Дальше используйте Search Console:

  • отправьте страницу на проверку URL;
  • посмотрите, как Google видит страницу сейчас;
  • убедитесь, что статус индексации меняется на исключённую или неиндексируемую страницу;
  • через некоторое время проверьте, исчезают ли дубли из отчётов.

Если страница всё ещё индексируется, обычно причина одна из трёх: тег не выводится на нужном шаблоне, canonical конфликтует с другим плагином, либо URL уже давно в индексе и поисковику нужно время на переобход.

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

Закрыли параметр в robots.txt раньше времени

Если запретить обход через robots.txt, поисковик может не увидеть noindex и canonical. Для дублей это часто хуже, чем просто оставить страницу доступной для обхода. Сначала дайте роботу увидеть мета-тег, потом при необходимости ограничивайте обход.

Случайно закрыли полезные страницы

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

Конфликт с SEO-плагином

Если у вас уже стоит Yoast SEO, Rank Math или другой SEO-плагин, он может переопределять canonical и robots-мета-теги. В таком случае не добавляйте второй независимый механизм без проверки. Сначала найдите, кто именно выводит тег в <head>.

Параметры остались в sitemap

Если URL с параметрами попали в карту сайта, поисковик будет продолжать их активно обходить. Проверьте генерацию sitemap и исключите технические адреса на уровне плагина или шаблона.

Безопасность и производительность

Чем больше мусорных URL, тем больше лишней работы у бота и у сервера. На нагруженных сайтах это заметно по логам и по количеству однотипных запросов. Но не стоит пытаться решить всё через жёсткий запрет доступа. Для SEO обычно важнее корректная индексация, а не блокировка на уровне сервера.

Если параметры используются для фильтрации каталога или поиска, проверьте ещё два момента: не создают ли они бесконечные комбинации URL, и не открывают ли они путь к тяжёлым запросам к базе. Иногда полезно ограничить допустимые значения параметров на уровне кода, а не только скрывать их от индексации.

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

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее