После смены структуры ссылок в WordPress часто остаются старые адреса: архивы, вложения, страницы с параметрами, дубли категорий или URL из старой темы. Если их не убрать из индекса, поисковик продолжит видеть две версии одной и той же страницы, а часть трафика будет уходить на устаревшие адреса.
Задача здесь не в том, чтобы просто поставить noindex везде подряд. Сначала нужно понять, какие URL реально мешают, затем закрыть их от индексации, а важные адреса — перенаправить на новые.
Что обычно ломается после смены URL
Типичный сценарий выглядит так: вы поменяли структуру постоянных ссылок, отключили часть архивов или перенесли контент в другие разделы, а в индексе остались старые адреса. В Search Console начинают всплывать страницы с кодом 200, которые уже не должны ранжироваться. Иногда проблема усиливается из-за кэша, sitemap или внутренних ссылок в шаблоне.
Признаки, что старые страницы все еще индексируются
- в поиске находятся URL, которых нет в актуальном меню и хлебных крошках;
- в отчете по страницам есть дубли с разными параметрами;
- старые адреса открываются с кодом 200 вместо 301 или 410;
- в sitemap попадают записи, которые вы уже скрыли из интерфейса;
- канонический URL указывает не туда, куда вы ожидаете.
Диагностика: какие URL нужно закрывать, а какие — редиректить
Перед правками проверьте несколько вещей вручную и через инструменты. Это экономит время и помогает не закрыть от индексации нужные страницы.
- Откройте старый URL в браузере и посмотрите, какой ответ возвращает сервер.
- Проверьте заголовки через
curl -I https://example.com/staryy-url/. - Сравните старый и новый адрес: если контент переехал один в один, нужен 301-редирект.
- Если страница больше не нужна и аналога нет, можно отдавать 410 Gone или закрывать от индексации.
- Посмотрите, не генерирует ли тему или плагин лишние архивы и вложения.
Важно: noindex не заменяет редирект. Если у страницы есть новый эквивалент, поисковику лучше показать именно его через 301. noindex уместен там, где страница должна открываться пользователю, но не должна попадать в поиск.
Пошаговое решение: закрываем старые URL без лишнего риска
Ниже — рабочая схема, которую удобно применять после миграции структуры сайта.
1. Настройте 301-редиректы для переехавших страниц
Если у старой страницы есть новый адрес, перенаправляйте ее на новый URL. Это самый безопасный вариант для SEO и для пользователей.
add_action('template_redirect', function () {
if (is_admin()) {
return;
}
$request_uri = $_SERVER['REQUEST_URI'] ?? '';
$map = [
'/staryi-razdel/' => '/novyi-razdel/',
'/old-about/' => '/about-us/',
];
foreach ($map as $old => $new) {
if (strpos($request_uri, $old) === 0) {
wp_safe_redirect(home_url($new), 301);
exit;
}
}
});Этот вариант подходит для небольшого количества точечных переездов. Если URL много, удобнее делать редиректы на уровне сервера или через специализированный плагин, чтобы не нагружать WordPress на каждом запросе.
2. Закройте от индексации служебные и устаревшие архивы
Если нужно оставить страницу доступной, но убрать ее из поиска, можно добавить noindex в <head>. Делать это стоит выборочно, а не глобально.
add_action('wp_head', function () {
if (is_admin()) {
return;
}
// Пример: закрываем от индексации старые архивы автора и вложений.
if (is_author() || is_attachment()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);Для вложений это особенно полезно: у многих сайтов attachment-страницы создают тонкие дубли без ценности. Если такие страницы не нужны, лучше не только ставить noindex, но и перенаправлять вложения на сам файл или родительскую запись.
3. Уберите старые URL из sitemap
Если старые адреса продолжают попадать в карту сайта, поисковик будет возвращаться к ним снова и снова. Проверьте настройки SEO-плагина и исключите из sitemap все, что вы закрыли от индексации.
Если sitemap генерируется кодом темы или кастомным плагином, убедитесь, что туда попадают только публичные типы записей и только те таксономии, которые реально должны индексироваться.
4. Проверьте канонические ссылки
На страницах с параметрами, фильтрами или дублями канонический URL должен указывать на основную версию. Если этого не происходит, поисковик может продолжать считать дубли самостоятельными страницами.
В WordPress каноникал часто формируется автоматически, но после кастомных правок темы или SEO-плагина лучше проверить исходный код страницы вручную.
Когда лучше использовать плагин, а когда — код
| Подход | Когда подходит | Минус |
|---|---|---|
| Плагин редиректов | Много старых URL, нужна удобная админка и журнал переходов | Дополнительная нагрузка и зависимость от настроек |
| Код в теме или мини-плагине | Несколько точечных правил, нужен полный контроль | Нужно аккуратно сопровождать при обновлениях |
| Редиректы на уровне сервера | Большой сайт, критична производительность | Сложнее в поддержке без доступа к конфигам |
Если у вас уже стоит SEO-плагин, сначала проверьте, не умеет ли он закрывать архивы, вложения и таксономии без ручного кода. Для комплексной чистки дублей и технических URL иногда удобнее использовать Clearfy Pro: он помогает убрать часть служебных страниц и снизить количество мусорных адресов в индексе. Но даже в этом случае редиректы для переехавших страниц лучше настраивать отдельно.
Проверка результата после внедрения
После правок не ограничивайтесь открытием страницы в браузере. Проверьте цепочку целиком.
- Старый URL должен отдавать 301 на новый адрес, если страница переехала.
- Служебные страницы должны отдавать
noindex,follow, если вы решили оставить их доступными. - В sitemap не должно быть закрытых URL.
- Внутренние ссылки в меню, хлебных крошках и блоках контента должны вести только на актуальные адреса.
- В Search Console нужно отправить на переобход новые URL и дождаться обновления отчета.
Проверка через консоль:
curl -I https://example.com/staryi-razdel/
curl -I https://example.com/novyi-razdel/В первом случае вы должны увидеть 301 Moved Permanently и заголовок Location с новым адресом. Во втором — обычный 200 OK.
Частые ошибки и как их исправить
Ставят noindex вместо редиректа
Если старая страница уже имеет новый аналог, noindex — слабое решение. Поисковик может еще долго держать старый URL в базе, а ссылочный вес распределится хуже, чем при 301.
Закрывают от индексации все подряд
Иногда после миграции начинают массово ставить noindex на записи, рубрики и даже главную. В итоге сайт теряет видимость. Закрывать нужно только то, что действительно является дублем, служебной страницей или мусорным URL.
Оставляют старые адреса в sitemap
Это частая причина, почему поисковик не отпускает старые страницы. Карта сайта должна отражать текущую структуру, а не историю изменений.
Не проверяют вложения и архивы автора
На небольших сайтах именно они часто создают лишние страницы в индексе. Если контент не рассчитан на отдельные страницы вложений, лучше отключить их индексацию или перенаправить.
Забывают про внутренние ссылки
Даже идеальный редирект не спасает, если шаблон продолжает ссылаться на старый URL. После смены структуры пройдитесь по меню, виджетам, блокам и шаблонам.
Что стоит учесть для безопасности и производительности
Редиректы и проверки лучше делать без лишней логики на каждом запросе. Если правил много, не храните их в громоздком коде темы. Вынесите в мини-плагин или используйте серверную конфигурацию. Это проще сопровождать и безопаснее при обновлении темы.
Не полагайтесь на случайные плагины с редиректами без понятной поддержки. На живом сайте ошибка в правилах может создать цепочки перенаправлений, петли или массовые 404. Перед внедрением всегда тестируйте на staging-копии.
Если у вас уже есть технический SEO-плагин, проверьте, не дублирует ли он логику темы. Два разных места, где формируется canonical или robots meta, часто дают конфликт и непредсказуемый результат.
В итоге рабочая схема простая: переехавшие страницы — через 301, служебные и бесполезные URL — через noindex или 410, sitemap — только из актуальных адресов, внутренние ссылки — только на новые URL. Тогда старые страницы перестают мешать индексации и не размывают структуру сайта.