Старые URL в WordPress обычно всплывают после редизайна, смены плагина, переноса рубрик или правки структуры постоянных ссылок. Проблема не в самих адресах, а в том, что поисковик продолжает видеть их как отдельные страницы: часть отдаёт 404, часть редиректится цепочкой, часть остаётся доступной по нескольким вариантам. В итоге появляются дубли, размывается вес ссылок и усложняется переобход сайта.
Ниже — рабочая схема, которая помогает привести такие адреса в порядок: сначала найти тип проблемы, потом выбрать правильный ответ сервера, затем проверить, что поисковик видит только один канонический вариант.
Когда старый URL нужно закрывать, а когда лучше оставить редирект
Не каждый устаревший адрес надо удалять одинаково. Если страница переехала на новый адрес и у неё есть замена, почти всегда нужен 301 на новый URL. Если контент больше не существует и аналога нет, можно оставить 410 Gone или 404, но только после того, как вы убрали внутренние ссылки и проверили, что на адрес не ведут важные внешние ссылки.
Для WordPress типичный сценарий такой:
- изменили структуру записей или рубрик — старые URL должны вести на новые через
301; - удалили служебные страницы, тестовые записи, дубли фильтров — лучше убрать их из индекса через
410илиnoindex, если они ещё нужны пользователям; - страница доступна в нескольких вариантах, например с
wwwи без, сhttpиhttps, с параметрами сортировки — нужен один канонический адрес и редирект на него.
Диагностика: что именно ломает индексацию
Перед правкой правил полезно понять, что происходит сейчас. Иначе легко получить цепочку редиректов, петлю или массовые 404.
Проверьте ответ сервера
Откройте старый адрес в браузере и посмотрите, что он отдаёт: 200, 301, 302, 404 или 410. Для точной проверки удобнее использовать консоль:
curl -I https://example.com/staryj-url/Если видите несколько переходов подряд, это уже повод упростить схему. Один старый адрес должен вести сразу на конечный, без промежуточных шагов через главную, рубрику или промежуточный slug.
Проверьте канонический адрес
Даже если страница открывается нормально, в <head> может быть указан другой canonical. В WordPress это часто случается после правок темы, SEO-плагина или кастомных шаблонов. Откройте исходный код страницы и найдите:
<link rel="canonical" href="https://example.com/novyj-url/" />Если canonical указывает на несуществующий или старый адрес, поисковик может продолжать считать его основным.
Проверьте внутренние ссылки
Редирект не должен маскировать хаос в контенте. Если меню, хлебные крошки, блоки в записях и виджеты всё ещё ссылаются на старый URL, сайт будет постоянно генерировать лишние обращения. Это особенно заметно после массовой замены slug или переноса материалов между рубриками.
Пошаговое решение: как убрать старый адрес без потери веса
Ниже — схема, которая работает в большинстве обычных проектов на WordPress.
Шаг 1. Назначьте новый целевой URL
Сначала определите, куда должен вести старый адрес. Если у старой страницы есть прямой аналог, редирект должен быть точечным. Не отправляйте всё на главную: это плохой сигнал для поисковика и неудобство для пользователя.
Шаг 2. Настройте 301-редирект
Если у вас есть доступ к .htaccess на Apache, можно добавить правило вручную. Пример для одного конкретного адреса:
Redirect 301 /staryj-url/ https://example.com/novyj-url/Если редиректов много, лучше использовать более точные правила mod_rewrite или настроить их на уровне сервера/панели хостинга. Для Nginx логика та же: один старый путь должен вести сразу на новый.
Когда нужен вариант на уровне WordPress, можно использовать хук template_redirect. Это удобно для небольшого количества адресов, но не лучший способ для сотен правил:
add_action('template_redirect', function () {
if (is_page('staryj-url')) {
wp_redirect(home_url('/novyj-url/'), 301);
exit;
}
});Такой код лучше размещать в дочерней теме или в небольшом MU-плагине, а не в основной теме, чтобы редирект не исчез при обновлении шаблона.
Шаг 3. Уберите внутренние ссылки на старый адрес
После настройки редиректа пройдитесь по меню, блокам, шаблонам и контенту. Если старый URL встречается в десятках мест, редирект будет работать, но сайт останется грязным. Для массовой замены удобно использовать поиск по базе через безопасный инструмент миграции или плагин, который умеет менять URL в контенте без поломки сериализованных данных.
Шаг 4. Укажите canonical на новый адрес
Если страница всё ещё доступна по нескольким вариантам, canonical должен указывать на один основной URL. В большинстве SEO-плагинов это настраивается автоматически, но при кастомной логике лучше проверить вручную. Для одиночной записи можно переопределить canonical через фильтр:
add_filter('get_canonical_url', function ($canonical, $post) {
if ($post instanceof WP_Post && $post->post_name === 'staryj-url') {
return home_url('/novyj-url/');
}
return $canonical;
}, 10, 2);Используйте это только если понимаете, почему стандартный canonical не подходит. В обычной ситуации достаточно корректного редиректа и нормальной настройки SEO-плагина.
Шаг 5. Для удалённых страниц выберите 410 или 404
Если контент удалён без замены, не делайте фиктивный редирект на похожую статью. Это часто хуже, чем честный 404. Если нужно явно сообщить поисковику, что адрес удалён навсегда, можно отдать 410 Gone:
add_action('template_redirect', function () {
if (is_page('udalennyj-url')) {
status_header(410);
nocache_headers();
echo 'Страница удалена';
exit;
}
});Такой подход уместен для тестовых страниц, старых акций, временных посадочных и служебных материалов, которые больше не должны возвращаться в индекс.
Сравнение подходов: редирект, canonical, noindex или 410
| Подход | Когда использовать | Плюсы | Минусы |
|---|---|---|---|
| 301 | Страница переехала на новый адрес | Передаёт сигнал о переезде, сохраняет переходы | Нужно следить за цепочками и внутренними ссылками |
| canonical | Есть несколько доступных вариантов одной страницы | Помогает выбрать основной URL без удаления доступа | Не заменяет редирект, если адрес реально устарел |
| noindex | Страница нужна пользователю, но не должна индексироваться | Оставляет доступной, убирает из индекса | Не решает проблему дублей, если есть много URL-версий |
| 410 | Контент удалён окончательно | Чёткий сигнал поисковику | Нельзя использовать вместо редиректа, если есть замена |
Проверка результата после внедрения
После правок не ограничивайтесь открытием страницы в браузере. Проверьте несколько уровней.
- старый URL отдаёт нужный код ответа и ведёт сразу на конечный адрес;
- новый URL открывается без редиректов и без лишних параметров;
- в исходном коде указан правильный canonical;
- внутренние ссылки больше не ведут на старый адрес;
- в Search Console старый URL постепенно уходит из отчётов об индексировании.
Для быстрой проверки удобно использовать curl -I и просмотр исходного кода страницы. Если есть доступ к логам сервера, посмотрите, не продолжает ли бот ходить на старый адрес по внутренним ссылкам или из карты сайта.
Частые ошибки и как их исправить
Редирект на главную вместо релевантной страницы
Так делают, когда не хотят разбираться с картой сайта. В результате пользователь попадает не туда, а поисковик получает слабый и неочевидный сигнал. Исправление простое: ищите ближайший по смыслу новый URL или оставляйте 404/410, если замены нет.
Цепочка из нескольких редиректов
Старый адрес ведёт на промежуточный, потом на новый, потом ещё куда-то. Это часто появляется после нескольких миграций. Нужно сократить схему до одного шага и обновить правила на сервере, а не добавлять ещё один плагин редиректов поверх старых правил.
Canonical указывает на несуществующий URL
Иногда шаблон или SEO-плагин продолжает печатать старый canonical, даже если сам адрес уже перенесён. Проверьте настройки SEO-плагина, кэш страницы и, если нужно, переопределите canonical в коде.
Старые URL остаются в sitemap
Если карта сайта генерируется автоматически, удалённые адреса могут ещё какое-то время попадать туда из-за кэша или неправильной фильтрации. После чистки проверьте XML sitemap и исключите из него удалённые записи, рубрики и служебные страницы.
Редиректы сделаны плагином, но правила конфликтуют
Когда одновременно работают несколько плагинов для SEO, кеша и редиректов, один и тот же адрес может обрабатываться по-разному. Если видите непредсказуемое поведение, временно отключите лишнюю логику и проверьте ответ сервера на уровне хостинга.
Практические советы по безопасности и производительности
Редиректы и canonical — это не только про SEO, но и про стабильность. Чем меньше лишних переходов, тем меньше нагрузка на сервер и тем быстрее пользователь попадает на нужную страницу.
- не храните сотни редиректов в теме, если они критичны для сайта — лучше вынести их в конфигурацию сервера или отдельный MU-плагин;
- не ставьте несколько SEO-плагинов одновременно, если они оба управляют canonical и sitemap;
- после массовой смены URL очистите кеш страниц, объектный кеш и CDN, иначе старые ответы могут висеть ещё долго;
- если используете плагин для чистки дублей и технической оптимизации, проверьте, не переписывает ли он canonical и robots для нужных вам типов страниц.
Если задача шире, чем один редирект, и на сайте накопилось много технического мусора, удобно сначала навести порядок в дублях, canonical и служебных страницах, а уже потом править отдельные адреса. В таких сценариях иногда проще использовать инструменты вроде Clearfy Pro, но только если вы понимаете, какие именно настройки меняете и как они влияют на индексацию.
Главный критерий простой: старый URL должен либо честно исчезнуть, либо безошибочно вести на новый. Всё остальное — полумеры, которые потом возвращаются в виде дублей, лишних обходов и путаницы в индексе.