Удалённая страница в WordPress не всегда должна просто исчезать с ошибкой 404. Если у неё был трафик, внешние ссылки или она давно ранжировалась, обычно нужен понятный сценарий: либо 301 на ближайший аналог, либо 410 для окончательно удалённого контента. Ошибка здесь одна и та же у многих сайтов: все 404 без разбора отправляют на главную. В итоге поисковик получает нерелевантный сигнал, а пользователь — бесполезный переход.
Ниже разберём, как выбрать правильный вариант, где это настраивать и как проверить, что редиректы работают, а не маскируют проблему.
Когда редирект нужен, а когда лучше оставить 404 или 410
Не каждая удалённая запись требует перенаправления. Если страница была заменена близкой по смыслу, например старая инструкция переехала в обновлённую версию, 301 — нормальный вариант. Если же материал удалён без замены и аналогов нет, принудительный редирект на главную обычно хуже, чем честный 404 или 410.
Практическая схема выбора
- 301 — есть релевантная новая страница или категория-замена.
- 404 — контент удалён, но вы не хотите сообщать поисковику, что у него есть замена.
- 410 — страница удалена окончательно и вы хотите ускорить её выпадение из индекса.
Если удалённых URL немного, их проще обработать вручную. Если сайт регулярно чистится от старых материалов, лучше сразу выстроить системный подход: таблица соответствий, правила в плагине редиректов или небольшой код в теме/му-плагине.
Диагностика: что именно ломается на сайте
Перед настройкой редиректов стоит понять, какие URL реально дают 404 и откуда на них идут переходы. Иначе можно потратить время на неважные адреса и пропустить те, что уже получают трафик из поиска или внешних ссылок.
Что проверить в первую очередь
- Отчёт 404 в аналитике или логах сервера.
- Внутренние ссылки на удалённые страницы — меню, блоки, похожие записи, хлебные крошки.
- Внешние ссылки, если страница получала упоминания.
- Есть ли у удалённого URL близкий аналог по теме.
Если у вас есть доступ к серверным логам, полезно посмотреть, как часто запрашивается конкретный адрес. Для единичных запросов редирект не всегда оправдан. Для URL с регулярными заходами из поиска или с других сайтов — уже да.
Пошаговое решение: как настроить редирект для удалённых страниц
Есть три рабочих подхода: плагин, серверные правила и код на уровне WordPress. Для большинства сайтов удобнее начать с плагина, а для точечных сценариев — использовать код.
| Подход | Когда использовать | Плюсы | Минусы |
|---|---|---|---|
| Плагин редиректов | Нужно быстро управлять списком URL | Удобно, без правки файлов | Дополнительная нагрузка, нужен контроль правил |
| .htaccess / nginx | Постоянные правила на уровне сервера | Быстро работает, не зависит от WordPress | Нужен доступ к серверу, выше риск ошибки |
| Код в WordPress | Небольшое число точечных редиректов | Можно завязать на логику сайта | Нужно аккуратно поддерживать код |
Вариант 1: редирект через код в WordPress
Если нужно перенаправить несколько конкретных удалённых URL, можно сделать это через template_redirect. Код лучше разместить в mu-plugin или в дочерней теме, а не в основной теме, чтобы он не потерялся при обновлении.
<?php
add_action('template_redirect', function () {
if (!is_404()) {
return;
}
$request_uri = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
$redirects = [
'staryj-url-1' => '/novyj-url/',
'udalennaya-statya' => '/razdel/poleznaya-zamena/',
'old-guide' => '/novaya-instrukciya/',
];
if (isset($redirects[$request_uri])) {
wp_redirect(home_url($redirects[$request_uri]), 301);
exit;
}
});Этот вариант подходит, если вы точно знаете список старых адресов. Но если страниц много, код быстро превращается в неудобную таблицу. Тогда лучше вынести правила в плагин или на сервер.
Вариант 2: редирект через сервер
Для Apache можно использовать .htaccess. Это уместно, если старый URL известен и правило должно отрабатывать до загрузки WordPress.
Redirect 301 /staryj-url-1/ https://example.com/novyj-url/
Redirect 301 /udalennaya-statya/ https://example.com/razdel/poleznaya-zamena/На nginx аналогичное правило обычно пишут в конфигурации сайта. Синтаксис зависит от сборки, поэтому лучше вносить изменения только если вы понимаете, где именно лежит конфиг и как его перезагрузить без простоя.
Вариант 3: плагин редиректов
Если редиректы меняются часто, удобнее использовать специализированный плагин. Важно не превращать его в свалку правил: удалённые URL лучше хранить списком, а не добавлять хаотично по одному.
Для небольших проектов это часто самый безопасный путь: меньше шансов сломать сайт из-за опечатки в конфиге, проще откатить правило и посмотреть историю изменений.
Как не сломать SEO при редиректе 404
Главная ошибка — отправлять всё на главную страницу. Для поисковика это выглядит как мягкая подмена смысла: страница исчезла, но вместо неё показывают нерелевантный документ. Если таких редиректов много, сайт начинает терять качество сигналов.
Что делать правильно
- Редиректить только на близкую по теме страницу.
- Если замены нет, оставить 404 или отдать 410.
- Убрать внутренние ссылки на удалённый URL.
- Проверить, не попал ли адрес в sitemap, кэш или блоки рекомендаций.
Если удалённая страница была частью цепочки навигации, обновите ссылки в меню, хлебных крошках и связанных материалах. Иначе пользователь будет попадать в 301 не только из поиска, но и из внутренних переходов, что лишний раз создаёт задержку и шум в логах.
Проверка результата после внедрения
После настройки важно убедиться, что код ответа и конечный URL соответствуют ожиданиям. Проверять нужно не только в браузере, но и через заголовки ответа.
Что проверить вручную
- Старый URL отдаёт
301, если вы настроили редирект. - Новый URL открывается без цепочки лишних переходов.
- Страница не уходит в бесконечный редирект.
- Для удалённого контента без замены действительно остаётся
404или410.
Удобно проверять через curl:
curl -I https://example.com/staryj-url-1/
curl -I https://example.com/novyj-url/В ответе смотрите на HTTP/1.1 301 Moved Permanently и заголовок Location. Если вместо этого видите 200, значит редирект не сработал. Если есть несколько 301 подряд, стоит сократить цепочку до одного перехода.
Частые ошибки и как их исправить
Редирект на главную вместо релевантной страницы
Это самая распространённая ошибка. Исправление простое: подберите ближайший по смыслу URL или оставьте 404/410. Главная не является универсальной заменой для любого удалённого материала.
Цепочка из нескольких редиректов
Если старый URL ведёт на промежуточный адрес, а тот уже на конечный, вы теряете время загрузки и усложняете обход. Нужно сразу вести на финальную страницу.
Редирект зациклился
Такое бывает, если правило написано на слишком общий шаблон, который захватывает уже новый URL. Проверьте условие матчинга и исключите конечный адрес из правила.
Удалённая страница всё ещё в sitemap
Если URL остался в карте сайта, поисковик продолжит его обходить. Убедитесь, что запись удалена из sitemap, а сам файл обновляется корректно. Для этого полезно проверить генератор карты сайта и кэш, если он есть.
Безопасность и производительность: что учесть на живом сайте
Если редиректов много, не стоит реализовывать их через тяжёлую логику на каждом запросе. Список из сотен правил в PHP без кэша может заметно нагружать сайт. Для массовых сценариев лучше серверные правила или специализированный плагин с нормальной структурой хранения.
Код, который читает редиректы из массива, должен быть предсказуемым и коротким. Не подгружайте данные из внешних источников и не давайте редактировать правила без контроля доступа. Редиректы — это часть маршрутизации сайта, а не поле для экспериментов редакторов.
Если нужно навести порядок в дублях, лишних архивах и технических страницах, иногда проще сначала почистить сайт на уровне SEO-логики, а уже потом настраивать точечные редиректы. В таких задачах полезны инструменты вроде Clearfy Pro, но только как вспомогательный слой, а не замена нормальной архитектуре URL.
Короткий чек-лист перед публикацией изменений
- Проверен список удалённых URL.
- Для каждого адреса выбран один сценарий: 301, 404 или 410.
- Нет редиректа на главную без причины.
- Нет цепочек и циклов.
- Удалённые URL убраны из внутренних ссылок и sitemap.
- Проверка через
curl -Iпоказывает нужный код ответа.
Если после внедрения старые адреса всё ещё индексируются, обычно проблема не в самом редиректе, а в том, что поисковик продолжает видеть URL в старых ссылках, кэше или внешних упоминаниях. В таком случае нужно дождаться переобхода и параллельно убрать все внутренние источники старого адреса.