Дубли по фильтрам в интернет-магазине: настройка canonical
Фасетная навигация генерит сотни URL-дублей. Что закрывать через canonical, что через noindex.
Симптом
- На странице категории появляются тысячи URL‑адресов, отличающихся только параметрами фильтров (например,
?color=red&size=M). - В поисковой выдаче Google показывает несколько одинаковых страниц с разными URL‑ами.
- Метрика «Duplicate content» в Google Search Console растёт.
- В отчёте «Index Coverage» отмечены «Duplicate without user‑selected canonical».
- Пользователи видят разные URL‑ы в адресной строке при использовании фильтров, но контент одинаковый.
Причина
Фасетная навигация генерирует уникальные URL‑адреса для каждой комбинации фильтров, но сервер не сообщает поисковикам, какая из них является «основной». По умолчанию поисковики индексируют все эти URL‑ы как отдельные страницы, создавая дубли. Если в ответе сервера не присутствует тег <link rel="canonical"> или атрибут rel="canonical" указывает на неверный URL, поисковик не знает, какой URL считать canonical.
Как проверить
-
Проверка наличия canonical
bash curl -I https://example.com/category?color=red&size=M | grep -i Link
В ответе должен быть заголовокLink: <https://example.com/category>; rel="canonical". -
Проверка в браузере
Откройте страницу с фильтром, посмотрите исходный код (Ctrl+U) и найдите тег:
html <link rel="canonical" href="https://example.com/category" /> -
Проверка в Search Console
В разделе «URL Inspection» введите URL с фильтром и проверьте, какой canonical Google видит. -
Проверка robots.txt
Убедитесь, что вrobots.txtнет директив, запрещающих индексацию параметров:
txt User-agent: * Disallow: /*?* -
Проверка параметров URL
В Search Console → URL Parameters проверьте, как Google обрабатывает параметрыcolor,sizeи т.д.
Решение
1. Выберите стратегию: canonical или noindex
| Параметр | Что делать | Почему |
|---|---|---|
| Фильтры, которые меняют порядок/сортировку | rel="canonical" на главную категорию |
Убирает дубли, но сохраняет индексацию категории |
| Фильтры, которые меняют контент (например, «Новинки» vs «Распродажа») | noindex + nofollow |
Эти страницы не нужны в индексе, но нужны для внутренней навигации |
| Параметры, которые создают уникальный контент (например, «Цена от 1000 до 2000») | rel="canonical" на соответствующую категорию |
Сохраняет релевантность, но избегает дублирования |
2. Добавьте canonical в шаблон страницы
<head>
<!-- ... -->
<link rel="canonical" href="{{ canonical_url }}" />
</head>
canonical_url – это URL без параметров фильтров, например https://example.com/category.
3. Пример настройки в Nginx (если сервер генерирует canonical динамически)
location /category {
if ($arg_color != "") {
set $canonical "https://example.com/category";
add_header Link "<$canonical>; rel=canonical";
}
}
4. Используйте robots.txt для параметров, которые не нужны в индексе
User-agent: *
Disallow: /*?color=
Disallow: /*?size=
5. Настройте Search Console → URL Parameters
- Для
colorиsizeустановите «Do not index» и «Do not follow». - Для параметров, которые меняют контент, установите «Yes, index this parameter».
6. Проверка после изменений
- Очистите кэш страницы и перезапустите сервер.
- Используйте
curlиgrepдля проверки заголовкаLink. - Отправьте обновлённый URL в Search Console для повторной индексации.
Связанные
Не хотите разбираться сами?
Запустите технический аудит сайта за 5 минут — получите PDF-отчёт с разбором всех 64 параметров и конкретными точками роста. Или закажите комплексное SEO-продвижение сайта — починим всё это и возьмём на себя дальнейшую оптимизацию.