Если после массовой автоподмены slug в CyrtoLat в индексе начали всплывать одинаковые title и description, проблема обычно не в самом SEO-плагине, а в связке: старые URL, шаблоны мета-тегов, кэш и повторно сохранённые записи. На практике это выглядит так: страница уже открывается по новому адресу, а в выдаче остаются старые сниппеты, либо несколько разных URL показывают один и тот же набор метаданных.
Ниже разберём сценарий именно для CyrtoLat: как диагностировать источник дублей, что поправить в настройках и коде, и как проверить, что после изменений поисковик и сайт действительно видят один канонический вариант.
Когда дубли появляются именно после автоподмены slug
Чаще всего это происходит в одном из трёх случаев. Первый — вы массово поменяли slug у записей, но не обновили внутренние ссылки и не пересобрали кэш SEO-плагина. Второй — в теме или SEO-плагине title и description собираются по шаблону из полей записи, а после переименования часть записей осталась со старыми мета-данными. Третий — старые URL продолжают отдавать 301, но поисковик ещё не переиндексировал новые адреса, поэтому в отчётах видно дубли по содержимому.
Что именно проверять в первую очередь
- одинаковый ли
<title>у старого и нового URL; - не дублируется ли
meta name="description"из-за двух SEO-источников; - не создаёт ли тема свои мета-теги поверх плагина;
- не остались ли старые ссылки в меню, хлебных крошках и контенте;
- не кешируется ли HTML на уровне плагина, сервера или CDN.
Диагностика проблемы без догадок
Начинать лучше не с правки кода, а с проверки конкретных URL. Возьмите один старый адрес и один новый, которые должны вести на одну и ту же запись. Сравните HTML в браузере или через curl. Важно смотреть не только на видимую страницу, но и на исходник, потому что дубли часто сидят именно там.
curl -I https://example.com/staryi-url/curl -s https://example.com/novyi-url/ | grep -iE '<title>|meta name="description"|rel="canonical"'Если у старого URL ответ 301, это нормально. Ненормально, если новый URL отдаёт тот же title, что и старый, но canonical указывает не на себя, а на другой адрес. Ещё один типичный признак — в исходнике есть два description: один от темы, второй от SEO-плагина. Тогда поисковик может выбрать любой из них, и вы получите нестабильный сниппет.
Пошаговое решение в CyrtoLat
Сама логика исправления простая: сначала убираем источник дублей, потом обновляем метаданные, затем проверяем, что старые адреса корректно перенаправляются. Если у вас уже включена автоподмена slug в CyrtoLat, не отключайте её целиком ради одной проблемы. Обычно достаточно точечно почистить записи и исключить повторное создание одинаковых URL.
1. Пересохраните записи с проблемными slug
После массовой автоподмены часть записей могла сохранить старые мета-значения в кэше плагина или в таблицах SEO-расширения. Откройте проблемную запись в админке, проверьте slug, title и description, затем сохраните её без изменения содержимого. Это заставит WordPress и связанные плагины пересобрать метаданные.
Если записей много, удобнее пройтись по ним через массовое редактирование или WP-CLI, но только если вы точно понимаете, какие поля обновляете. Сам CyrtoLat не должен создавать дубли title и description, он меняет slug; дубли обычно появляются из-за повторной генерации мета-тегов сторонним плагином или темой.
2. Проверьте шаблоны SEO-плагина и темы
Если title и description формируются по шаблону, убедитесь, что в шаблоне нет одинаковых подстановок для разных типов записей. Например, когда и у записей, и у страниц используется один и тот же шаблон без уникального контекста, поисковик видит повторяющиеся сниппеты. Для технической проверки достаточно временно открыть исходник и сравнить, откуда именно приходит мета-тег: из темы, из Yoast, Rank Math или другого SEO-решения.
Если тема сама выводит description, а SEO-плагин делает то же самое, оставьте только один источник. Два description в одной странице — частая причина нестабильной индексации.
3. Очистите кэш после смены slug
После автоподмены slug старый HTML может продолжать отдаваться из кэша. Это касается и плагинов кэширования, и серверного кэша, и CDN. Очистка нужна не «на всякий случай», а потому что поисковый бот может несколько раз подряд увидеть старую версию страницы и закрепить её в индексе.
Если у вас включён объектный кэш или page cache, сбросьте его после массовой смены URL. Затем проверьте, что новый URL отдаёт свежий canonical и актуальный title.
Когда нужен код: точечная защита от повторной генерации дублей
Иногда проблема не в разовой миграции, а в том, что при каждом сохранении запись снова получает одинаковые мета-значения. Тогда полезно добавить небольшой фильтр, который не даст автоматически подставлять одинаковый title для записей с уже заданным SEO-заголовком. Ниже пример для темы или mu-plugin: он не ломает CyrtoLat, а помогает не перетирать вручную заданные метаданные.
<?php
add_filter( 'document_title_parts', function( $parts ) {
if ( is_singular() ) {
$custom_title = get_post_meta( get_the_ID(), '_yoast_wpseo_title', true );
if ( ! empty( $custom_title ) ) {
return $parts;
}
}
return $parts;
} );Этот пример уместен только если у вас реально используется Yoast SEO и вы хотите оставить ручной title при наличии заполненного поля. Для Rank Math или другого плагина ключ мета-поля будет другим. Смысл не в копировании кода, а в том, чтобы не смешивать автоматический и ручной источник title.
Если нужно проверить canonical на уровне шаблона, можно временно вывести его в лог или посмотреть исходник страницы. Подменять canonical без понимания всей цепочки не стоит: неправильный canonical часто хуже, чем временный дубль title.
Сравнение подходов: плагин, код или ручная правка
| Подход | Когда подходит | Минус |
|---|---|---|
| Пересохранить записи и очистить кэш | После массовой автоподмены slug | Не решает конфликт шаблонов в теме |
| Исправить шаблоны SEO-плагина | Если дубли идут из мета-шаблонов | Нужно знать, кто именно выводит title и description |
| Добавить точечный фильтр в код | Если автоматическая генерация перетирает ручные поля | Требует аккуратной поддержки при обновлениях |
Проверка результата после внедрения
После исправлений не ограничивайтесь визуальной проверкой в браузере. Откройте исходник нового URL и убедитесь, что:
- в документе один
<title>; - description выводится один раз;
rel="canonical"указывает на текущий URL;- старый URL отдаёт 301 на новый адрес;
- внутренние ссылки в контенте уже ведут на новый slug.
Дополнительно проверьте страницу в Google Search Console, если она уже там есть. Не ждите мгновенного обновления сниппета: поисковик может какое-то время держать старые данные, даже если на сайте всё исправлено. Важнее, чтобы сам HTML был чистым и однозначным.
Частые ошибки и как их исправить
В исходнике остались два description
Это почти всегда конфликт между темой и SEO-плагином. Оставьте один источник мета-описания. Если тема не умеет отключать свой вывод, проще убрать его через настройки темы или фильтр, чем пытаться «перебить» второй тег поверх первого.
Старый URL не редиректит
Тогда поисковик видит две страницы с похожим содержимым. Проверьте правила редиректа, настройки CyrtoLat и кэш. Если старый адрес отдаёт 200 вместо 301, сначала исправляйте редирект, а уже потом мета-теги.
Title одинаковый у разных записей
Значит, шаблон title слишком общий. Добавьте в шаблон уникальный контекст: рубрику, тип записи или часть заголовка. Но не делайте шаблон слишком длинным: задача не в том, чтобы набить title словами, а в том, чтобы он отличался от соседних страниц.
После правок ничего не изменилось
Почти наверняка мешает кэш. Сбросьте кэш плагина, сервера и CDN, затем снова проверьте исходник. Если кэш не очищен полностью, вы будете смотреть на старую версию страницы и делать неверные выводы.
Что делать, чтобы дубли не вернулись
После массовой автоподмены slug в CyrtoLat полезно закрепить несколько правил. Не смешивайте ручную и автоматическую генерацию мета-тегов без необходимости. Не оставляйте в теме собственный вывод description, если SEO-плагин уже делает это. И не меняйте slug повторно без проверки редиректов и canonical.
- проверяйте один проблемный URL до массовой правки;
- сначала чистите кэш, потом смотрите индексацию;
- не держите два источника title/description одновременно;
- после миграции пересматривайте внутренние ссылки;
- сохраняйте записи, которые были затронуты автоподменой.
Если нужен соседний сценарий, логично отдельно разобрать, как в CyrtoLat проверить, что после автоподмены не остались внутренние ссылки на старые slug. Это уже другая проблема: не мета-теги, а связность сайта и цепочки редиректов.