Если в индексе уже появились не только сами страницы тикетов, но и их дубли — с параметрами, пагинацией, сортировкой или служебными URL — проблему лучше разбирать по слоям. Просто поставить noindex на одну страницу обычно недостаточно: поисковик может продолжать обходить копии, а в отчётах останутся лишние адреса.
Для проектов с тикет-системой это особенно заметно, когда один и тот же контент доступен через несколько маршрутов: публичная страница тикета, архив, фильтр по статусу, поиск по сайту, страницы автора, а иногда ещё и параметры в URL. Ниже — рабочий порядок действий: сначала диагностика, потом исправление на уровне шаблона, заголовков и каноникал, и только после этого — проверка результата.
Какие дубли чаще всего появляются у тикетов
У тикетных страниц обычно дублируются не только сами записи, но и их представления. Поисковик может видеть разные URL как отдельные страницы, если контент совпадает или почти совпадает. На практике это выглядит так:
- страница тикета и её версия с параметрами фильтра;
- архив тикетов и страницы пагинации;
- страницы поиска по тикетам;
- URL со служебными параметрами сортировки;
- страницы вложений или предпросмотра, если они открыты для индексации.
Если тикеты доступны в публичной части сайта, дубли легко появляются даже без ошибок в коде. Достаточно, чтобы тема или плагин выводили одинаковый заголовок и фрагмент текста на нескольких маршрутах.
Диагностика: где именно плодятся лишние URL
Начинать стоит не с robots.txt, а с фактической картины в индексе и на сайте. Иначе можно закрыть не то, что нужно, и потерять полезные страницы.
Проверка через поисковую выдачу и Search Console
Сначала посмотрите, какие варианты URL уже попали в индекс. Для этого удобно использовать поиск по сайту и отчёт «Страницы» в Google Search Console. Если у одной и той же сущности есть несколько адресов, обычно видно:
- разные URL с одинаковым заголовком;
- страницы с параметрами
?paged=,?s=,?status=; - архивы, которые повторяют содержимое карточек тикетов;
- дубли через пагинацию, где первая страница повторяет архив.
Проверка шаблонов и мета-тегов
Откройте исходный код проблемной страницы и проверьте три вещи: canonical, robots и заголовок. Если канонический адрес ведёт на другой URL без причины, поисковик может склеить не те страницы. Если noindex отсутствует там, где должен быть, дубли будут индексироваться дальше.
Полезно также проверить, не генерирует ли тема одинаковый <title> для архива, одиночной записи и страницы поиска. Для тикетов это частая причина «мягких дублей».
Пошаговое решение: как убрать дубли без поломки индекса
Задача обычно решается в три этапа: ограничить индексацию служебных страниц, задать корректный canonical и убрать дубли на уровне шаблона. Если у вас есть доступ к коду темы или небольшому mu-plugin, это надёжнее, чем пытаться лечить всё одним SEO-плагином.
1. Закройте служебные страницы через noindex
Для архивов, поиска и страниц с параметрами лучше отдавать noindex, follow, если они не несут самостоятельной ценности. Ниже пример для обычной темы или небольшого плагина:
<?php
add_action('wp_head', function () {
if (is_search() || is_paged() || is_post_type_archive('ticket')) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});
Этот вариант подходит только как базовая мера. Если у вас уже подключён SEO-плагин, не дублируйте мета-теги из двух источников. Иначе в коде страницы появятся два разных robots, а это уже лишний шум для поисковиков.
2. Укажите правильный canonical для тикетов
Если тикет доступен по нескольким URL, canonical должен указывать на единственный основной адрес. Для одиночной страницы тикета это обычно её постоянный URL без параметров. Пример фильтра для WordPress:
<?php
add_filter('get_canonical_url', function ($canonical, $post) {
if ($post instanceof WP_Post && $post->post_type === 'ticket') {
return get_permalink($post);
}
return $canonical;
}, 10, 2);
Если тикеты у вас не отдельный post type, а обычные записи с категорией или меткой, логику нужно адаптировать под вашу структуру. Смысл один: у каждой сущности должен быть один основной URL.
3. Уберите дубли из архивов и пагинации
Архивы часто повторяют контент карточек тикетов почти без изменений. Если архив нужен только как навигация, а не как посадочная страница, его лучше закрыть от индексации. Для пагинации важно не ломать обход, поэтому follow оставляем.
Если архив выводит слишком много одинаковых карточек, проверьте шаблон: не дублируется ли в нём полный текст тикета вместо короткого фрагмента. Иногда проблема не в SEO, а в самом HTML.
4. Проверьте параметры URL и фильтры
Фильтры по статусу, приоритету, агенту или дате часто создают отдельные URL с почти одинаковым содержимым. Если такие страницы не нужны в поиске, их лучше закрыть на уровне шаблона или через серверную логику. Для параметров можно использовать проверку $_GET, но только после валидации и без слепого копирования всех значений в canonical.
<?php
add_action('wp_head', function () {
$has_ticket_filter = isset($_GET['status']) || isset($_GET['priority']) || isset($_GET['agent']);
if ($has_ticket_filter) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});
Что выбрать: плагин, код или оба варианта
| Подход | Когда подходит | Плюс | Минус |
|---|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы, поиск и пагинацию | Меньше кода, проще поддержка | Не всегда удобно точечно управлять тикетами |
| Код в теме или mu-plugin | Есть отдельный post type и нестандартные URL | Точный контроль canonical и robots | Нужна аккуратная проверка логики |
| Комбинация | Есть и базовые SEO-настройки, и специфичные маршруты тикетов | Гибкость | Важно не задублировать правила |
Если у вас уже стоит плагин для технической оптимизации, например Clearfy Pro, часть задач можно закрыть настройками без кода. Но для нестандартных маршрутов тикетов всё равно часто нужен отдельный фильтр в теме или плагине. Ссылка на продукт: https://wpshop.ru/plugins/clearfy.
Проверка результата после внедрения
После правок не стоит сразу ждать, что индекс очистится сам. Сначала проверьте, что сервер и HTML отдают именно то, что вы задумали.
- Откройте проблемный URL и убедитесь, что в
<head>есть один корректныйcanonical. - Проверьте, что служебные страницы отдают
noindex,follow, а неindex,follow. - Сравните исходный код архивов, поиска и одиночных тикетов: заголовки не должны быть одинаковыми без причины.
- В Search Console отправьте на повторную проверку только те URL, которые вы реально исправили.
Если у вас есть доступ к логам, полезно посмотреть, как поисковый робот обходит старые адреса. Это помогает понять, не остались ли открытыми параметры, которые вы забыли закрыть.
Частые ошибки и как их исправить
Ставят noindex на всё подряд
Так делают, когда хотят быстро «почистить индекс», но в итоге закрывают и полезные страницы. Если тикет должен быть доступен пользователю и поиску, не прячьте его без разбора. Закрывать нужно именно дубли и служебные маршруты.
Забывают про canonical
Даже если страница закрыта от индексации, canonical всё равно важен. Без него поисковик может продолжать считать разные URL отдельными сущностями и тратить краулинговый бюджет на мусор.
Дублируют правила в плагине и в теме
Это частая причина конфликтов. Например, SEO-плагин ставит один canonical, а тема — другой. В результате в коде страницы два одинаковых блока или два разных значения. Оставьте один источник правды: либо плагин, либо код.
Не проверяют пагинацию и фильтры
На практике основной дубль часто сидит не в самой карточке тикета, а в страницах списка. Если закрыли только одиночные URL, а архивы и фильтры остались открыты, проблема никуда не делась.
Безопасность и производительность
Любые правки, связанные с мета-тегами и canonical, лучше вносить в дочернюю тему или mu-plugin. Так вы не потеряете изменения после обновления темы. Перед выкладкой на прод проверьте правки на staging-копии и сравните HTML до и после.
Если у вас большой объём тикетов, не генерируйте сложную логику в wp_head для каждого запроса без необходимости. Простые проверки допустимы, но тяжёлые запросы к базе на каждой странице быстро превращаются в лишнюю нагрузку. Для сложных случаев лучше один раз собрать правила в отдельной функции и кэшировать результат, если он действительно повторяется.
И ещё один практический момент: если тикеты содержат персональные данные или внутренние комментарии, закрытие от индексации не заменяет контроль доступа. Публичный URL может быть не в индексе, но всё равно доступен по прямой ссылке. Это уже вопрос прав доступа, а не SEO.