- Введение в проблему дублей страниц
- Какие параметры чаще всего создают дубли
- Методы решения проблемы дублей
- Практические рекомендации по группам параметров
- Проверка и мониторинг дублей
- Итоговые рекомендации
Кратко для тех, кому лень читать: Каноническая ссылка (`rel=»canonical») – один из самых надежных способов избежать дублей из-за параметров URL. Но лучше комбинировать его с другими методами, в зависимости от ситуации.
Введение в проблему дублей страниц
Дубли страниц — серьезная проблема SEO, которая возникает, когда один и тот же контент доступен по разным URL-адресам. Особенно часто это происходит из-за различных параметров в URL, таких как UTM-метки (?utm_source, ?utm_campaign), идентификаторы сессий (?session_id) или другие служебные параметры.
Поисковые системы рассматривают каждый из этих URL как отдельную страницу, что приводит к:
- Размыванию ссылочного веса
- Конкуренции страниц в выдаче
- Проблемам с индексацией
- Ухудшению позиций
Какие параметры чаще всего создают дубли
Маркетинговые и аналитические параметры:
- UTM-метки: ?utm_source, ?utm_medium, ?utm_campaign, ?utm_term, ?utm_content
- Параметры кликов: ?fbclid, ?gclid, ?yclid, ?msclkid
- Параметры рекламных систем: ?_openstat, ?from, ?ref
Технические параметры:
- Идентификаторы сессий: ?session_id, ?sid, ?PHPSESSID
- Параметры сортировки и фильтрации: ?sort, ?order, ?filter
- Языковые параметры: ?lang, ?locale
- Параметры пагинации: ?page, ?p
Параметры социальных сетей:
- ?fb_action_ids
- ?fb_comment_id
- ?utm_share
Методы решения проблемы дублей
1. Канонические ссылки (rel=»canonical»)
Как реализовать на странице https://example.com/main-page?page=2:
<link rel="canonical" href="https://example.com/main-page" />
Особенности:
- Указывает поисковым системам, какая версия страницы является основной
- Должен быть на всех дублирующих страницах
- URL в канонической ссылке должен быть абсолютным
2. Редиректы (301 и 302) с сохранением аналитики
Когда использовать редиректы для URL с параметрами
| Тип редиректа | Когда применять | Как сохранить аналитику |
|---|---|---|
| 301 (постоянный) | Для параметров, которые не нужны в аналитике (например, дублирующие session_id, ненужные ref-метки) | Не требуется – эти параметры не ценны для отслеживания |
| 302 (временный) | Для временных кампаний, где важно сохранить источник трафика | Перед редиректом: • Записать параметры в cookie • Отправить данные в Метрику через ym() |
| JavaScript-редирект | Для UTM-меток, fbclid, gclid и других рекламных параметров | 1. Сначала отправить данные в Метрику 2. Затем сделать window.location.replace() |
Правильная реализация (с сохранением UTM в Метрике)
Вариант 1: PHP + Cookie (универсальный)
// Если есть UTM-меткиif (isset($_GET['utm_source'])) { // 1. Сохраняем в cookie (для последующих страниц) setcookie('utm_tracking', json_encode($_GET), time() + 3600 * 24 * 7, '/');
// 2. Отправляем в Яндекс.Метрику (через JavaScript) echo '<sсript>ym(XXXXXX, "params", ' . json_encode($_GET) . ');</script>';
// 3. Делаем 302 редирект (временный, чтобы не потерять сессию) header("Location: " . strtok($_SERVER['REQUEST_URI'], '?'), true, 302); exit;}
Вариант 2: Чистый JavaScript (проще, но менее SEO-дружелюбно)
// Если в URL есть UTM-меткиif (location.search.includes('utm_')) { const params = new URLSearchParams(location.search);
// 1. Отправляем в Метрику if (typeof ym === 'function') { ym(XXXXXX, 'params', { utm_source: params.get('utm_source'), utm_medium: params.get('utm_medium'), // ... остальные параметры }); }
// 2. Удаляем параметры из URL (без перезагрузки) history.replaceState({}, '', location.pathname);}
Что выбрать?
| Способ | Плюсы | Минусы |
|---|---|---|
| 301 + Cookie | Лучше для SEO, данные сохраняются | Сложнее в настройке |
| 302 + ym() | Проще, данные точно попадут в Метрику | Временный редирект хуже для индексации |
| JS replaceState | Нет видимого редиректа | Поисковики могут увидеть исходный URL |
Рекомендация:
Для рекламных кампаний используйте 302 + JavaScript-отправку в Метрику, если важно сохранить источник. Для технических параметров (сессии, сортировки) – 301 без сохранения.
3. Указание игнорируемых параметров в поисковых системах
Google Search Console:
- Перейти в Search Console → выбрать ресурс
- Открыть «Настройки сканирования» → «Параметры URL»
- Добавить параметры, которые нужно игнорировать
Яндекс.Вебмастер:
- Перейти в Вебмастер → выбрать сайт
- Открыть «Индексирование» → «Настройка GET-параметров»
- Указать GET-параметры, которые нужно игнорировать при определении уникальности страниц (это позволит корректно отображать сайт в Поиске и аналитических отчетах)
- Нажать кнопку «Добавить параметр»\

Преимущества:
- Простая настройка
- Не требует изменений кода сайта
Ограничения:
- Не решает проблему размывания ссылочного веса
- Настройки работают только внутри каждой системы (Google / Яндекс отдельно)
4. Использование мета-тега robots
Для полного запрета индексации:
<meta name="robots" content="noindex">
Для запрета следования по ссылкам:
<meta name="robots" content="nofollow">
Когда применять:
- Для временных акционных страниц
- Для страниц с динамически генерируемым контентом
- Когда другие методы не подходят
5. Нормализация URL на стороне сервера
Пример реализации на PHP:
$clean_url = preg_replace('/\?(utm_[^&]+|gclid=[^&]+)&?/i', '', $_SERVER['REQUEST_URI']);if ($clean_url != $_SERVER['REQUEST_URI']) { header("Location: " . $clean_url, true, 301); exit;}
6. Использование файла robots.txt
Файл robots.txt — это важный инструмент управления индексацией страниц с параметрами. Хотя он не является прямым методом устранения дублей (как 301 редирект или канонические ссылки), его правильное применение помогает:
- Уменьшить нагрузку на краулеры
- Предотвратить индексацию нежелательных вариантов URL
- Оптимизировать бюджет сканирования
Как применять:
Блокировка ненужных параметров:
User-agent: *Disallow: /*?utm_*Disallow: /*?session_id=Disallow: /*?*sort=Disallow: /*?*page=
Блокировка динамических дублей:
User-agent: *Disallow: /*?*Allow: /*?category=*Allow: /*?filter=price*
Особые указания для разных поисковиков:
User-agent: GooglebotDisallow: /*?ref=
User-agent: YandexDisallow: /*?from=
Важные ограничения:
- ❌ Не блокируйте через robots.txt главные страницы с параметрами, которые должны индексироваться
- ❌ Не используйте как единственный метод — комбинируйте с каноническими ссылками
- ❌ Помните, что robots.txt не удаляет уже проиндексированные страницы
Лучшие практики:
✔ Составляйте правила после анализа журналов crawl’а
✔ Тестируйте новые правила в инструментах для вебмастеров
✔ Обновляйте файл при добавлении новых параметров на сайте
✔ Комбинируйте с другими методами (канонизация, редиректы)
Пример комплексного подхода:
- В robots.txt блокируем явно ненужные параметры
- Для важных параметров настраиваем канонические ссылки
- Маркетинговые метки обрабатываем через JS + 302 редирект
- Технические параметры удаляем через 301 редирект
Этот метод особенно полезен для крупных сайтов с сотнями тысяч URL, где ручная настройка каждого случая невозможна.
7. Clean Param для Яндекса
Clean Param (в Яндекс.Вебмастере) помогает избежать дублирования страниц из-за параметров URL, но только для Яндекса.
Как работает Clean Param?
Это инструмент, который сообщает Яндексу, что определенные параметры в URL не меняют содержание страницы, и их можно игнорировать при индексации.
Пример:
Если у вас есть страницы:
- example.com/product?utm_source=fb
- example.com/product?ref=ad
- example.com/product?sessionid=123
Вы можете указать в Яндекс.Вебмастере (Настройка индексирования → Параметры URL), что параметры utm_source, ref и sessionid не влияют на контент. Тогда Яндекс будет считать их одной страницей – example.com/product.
Плюсы Clean Param:
✅ Упрощает индексацию, уменьшая дубли.
✅ Работает автоматически для всех URL с указанными параметрами.
✅ Не требует правки кода сайта (в отличие от canonical).
Ограничения:
❌ Работает только в Яндексе – Google его игнорирует.
❌ Не заменяет rel=»canonical» – лучше использовать оба метода.
❌ Не подходит для значимых параметров (например, ?page=2 или ?filter=color).
Что лучше: Clean Param или Canonical?
| Метод | Для Яндекса | Для Google | Нужно править код? |
|---|---|---|---|
| Clean Param | ✅ Да | ❌ Нет | ❌ Нет (настройка в Вебмастере) |
| Canonical (rel=»canonical») | ✅ Да | ✅ Да | ✅ Да (добавить в HTML) |
Рекомендации:
- Используйте Clean Param в Яндексе для технических параметров (utm_, sessionid, ref).
- Добавьте rel=»canonical» – это универсальное решение для всех поисковиков.
- Для Google настройте обработку параметров в Google Search Console (Настройки → Параметры URL).
Вывод: Clean Param – полезный инструмент, но только в связке с другими методами. Если у вас сложный случай с дублями – лучше комбинировать его с каноническими ссылками и 301-редиректами.
Практические рекомендации по группам параметров
Чтобы избежать дублей страниц, но сохранить аналитику и удобство пользователей, применяйте разные стратегии для разных типов параметров.
1. Маркетинговые и рекламные параметры
(utm_, fbclid, gclid, yclid, _openstat, from, ref)*
Проблема:
Нужны для аналитики, но создают дубли в поисковиках.
Решение:
✅ Использовать JavaScript + 302 редирект
- Перед редиректом отправить UTM-метки в Яндекс.Метрику и Google Analytics.
- Записать в cookie/sessionStorage, чтобы передать на другие страницы.
- Сделать 302 редирект на чистый URL.
// 1. Отправка данных в Метрикуif (location.search.includes('utm_')) { const params = new URLSearchParams(location.search);
// Яндекс.Метрика if (typeof ym === 'function') { ym(123456, 'params', { utm_source: params.get('utm_source'), utm_medium: params.get('utm_medium'), // ... }); }
// Google Analytics 4 (если используется) if (typeof gtag === 'function') { gtag('event', 'utm_tracking', { utm_source: params.get('utm_source'), // ... }); }
// 2. Сохранение в sessionStorage (на время сессии) sessionStorage.setItem('utm_params', JSON.stringify({ utm_source: params.get('utm_source'), // ... }));
// 3. Редирект на чистый URL (302 — временный) window.location.replace(window.location.pathname);}
Дополнительно:
🔹 Канонический тег на основной URL (на всякий случай).
🔹 В Search Console можно добавить utm_* в игнорируемые параметры.
2. Технические параметры
(session_id, sid, PHPSESSID, tracking_id)
Проблема:
Не нужны для аналитики, но создают дубли.
Решение:
✅ 301 редирект без сохранения
- Просто удаляем их, т.к. они не несут полезной информации.
Пример (через .htaccess):
RewriteCond %{QUERY_STRING} ^(.+&)?(session_id|sid|PHPSESSID)=[^&]+(&.*)?$ [NC]RewriteRule ^(.*)$ /$1?%1%3 [R=301,L,NE]
Или через Nginx:
if ($args ~* "(^|&)(session_id|sid|PHPSESSID)=[^&]+") { set $args_new ""; if ($args ~* "(^|&)([^&]+)") { set $args_new $2; } rewrite ^(.*)$ $1?$args_new? permanent;}
3. Параметры сортировки и фильтрации
(sort, order, filter, page, size)
Проблема:
Могут быть важны для пользователя, но создают дубли.
Решение:
✅ Канонический тег на основную версию (если параметры не меняют контент кардинально).
✅ Отдельные канонические URL (если фильтры создают уникальный контент).
Пример:
<!-- Если /product-list?sort=price — просто сортировка --><link rel="canonical" href="https://site.com/product-list" />
<!-- Если /product-list?category=shoes — уникальный контент --><link rel="canonical" href="https://site.com/product-list?category=shoes" />
Дополнительно:
🔹 В robots.txt можно запретить индексацию лишних комбинаций:
Disallow: /*?*sort=Disallow: /*?*page=
4. Социальные и реферальные параметры
(fb_ref, vk_ref, social_share, ref)
Проблема:
Нужны для аналитики, но создают дубли.
Решение:
✅ Аналогично UTM-меткам (JS + 302 редирект).
✅ Если не нужны — 301 редирект.
Итоговая таблица стратегий
| Тип параметров | Стратегия | Как сохранить аналитику |
|---|---|---|
| UTM, рекламные (gclid) | JS + 302 редирект | Отправка в Метрику перед редиректом |
| Сессионные (PHPSESSID) | 301 редирект | Не требуется |
| Фильтры, сортировка | Канонические URL | — |
| Социальные (fb_ref) | JS + 302 или 301 (если не нужны) | Аналогично UTM |
Главные правила:
✔ Для аналитики → сначала отправляем данные, потом редирект.
✔ Для SEO → 301 или канонические ссылки.
✔ Для пользователя → оставляем только важные параметры.
Таким образом, вы избежите дублей, но сохраните всю аналитику. 🚀
Проверка и мониторинг дублей
Инструменты для выявления дублей:
- Google Search Console (Отчет «Покрытие»)
- Ahrefs, SEMrush (отчеты о дублях)
- Screaming Frog SEO Spider (анализ канонических тегов)
- Сервисы для аудита сайтов (SiteAnalyzer, Netpeak Spider, Лабрика)
Регулярные проверки:
- Ежемесячный аудит на наличие новых дублей
- Мониторинг после запуска новых рекламных кампаний
- Проверка после крупных обновлений сайта
Итоговые рекомендации
Проблема дублирующего контента из-за параметров URL (UTM-меток, сессионных ID, фильтров и др.) критична для SEO, но решаема. Главное — найти баланс между чистотой URL, сохранением аналитики и удобством пользователей.
Ключевые выводы:
- Для маркетинговых параметров (UTM, gclid, fbclid):
- Используйте JavaScript + 302 редирект, чтобы сначала отправить данные в аналитику, а затем перенаправить на чистый URL.
- Сохраняйте параметры в cookie или sessionStorage, чтобы передавать их между страницами.
- Для технических параметров (сессий, служебных меток):
- Применяйте жесткий 301 редирект — они не несут ценности для аналитики.
- Для фильтров и сортировок:
- Если параметры не меняют суть страницы — указывайте каноническую ссылку на основной URL.
- Если создают уникальный контент (например, фильтр по категориям) — настройте отдельные канонические URL.
- Для социальных и реферальных меток:
- Действуйте так же, как с UTM: сохраняйте данные, затем редиректьте.
- Дополнительные меры:
- В Google Search Console укажите, какие параметры нужно игнорировать.
- В robots.txt ограничьте индексацию ненужных комбинаций (например, Disallow: /*?*sort=).
Главный принцип:
- Если параметры нужны для аналитики → сохраняем их, но убираем из URL.
- Если не нужны → удаляем жестко (301 редирект).
- Если влияют на контент → используем каноникал.
При таком подходе:
🔹 Поисковики увидят только чистые URL, без дублей.
🔹 Маркетологи получат полную аналитику по источникам трафика.
🔹 Пользователи не будут путаться в длинных ссылках.
Следуя этим правилам, вы избавитесь от проблем с индексацией, сохраните трафик и улучшите SEO-показатели сайта. 🚀