404-страницы в WordPress обычно всплывают после смены структуры ссылок, удаления записей, переезда с другого движка или ручной правки URL. Если такие адреса уже попали в индекс или на них ведут внешние ссылки, их лучше не оставлять как есть: пользователь упрётся в ошибку, а поисковик будет продолжать обходить несуществующий адрес.
Рабочая схема здесь простая: сначала найти источник 404, затем понять, нужен ли редирект, и только после этого настраивать перенаправление на релевантную страницу. Если просто массово отправить всё на главную, проблема не исчезнет — поисковая система и пользователи получат нерелевантный ответ.
Как понять, какие 404-страницы реально мешают
Не каждый 404 одинаково важен. Одно дело — случайный мусорный URL из логов, другое — старая статья, на которую есть ссылки из поиска или с других сайтов. Сначала смотрим, какие адреса дают трафик, а какие просто шумят.
Что проверить в первую очередь
- Google Search Console: раздел с ошибками сканирования и страницами, которые не найдены.
- Логи сервера, если есть доступ: по ним видно, какие URL реально запрашивают боты и пользователи.
- Внутренние ссылки сайта: иногда 404 появляются из-за старых ссылок в меню, блоках или контенте.
- Старые адреса после изменения структуры постоянных ссылок.
Если 404-страница получает переходы из поиска или с внешних сайтов, ей почти всегда нужен 301-редирект на ближайший по смыслу аналог. Если адрес мусорный и на него никто не ссылается, можно оставить 404 или вернуть 410, если нужно явно показать, что контент удалён окончательно.
Диагностика: откуда берутся битые URL
Самая частая ошибка — чинить только следствие. Например, поставить редирект на удалённую запись, но не убрать ссылку из меню, виджета или старой статьи. В итоге через неделю 404 снова появляется в логах.
Проверьте типовые источники:
- изменили slug записи или страницы;
- удалили рубрику, тег или архив;
- перенесли сайт с другой структуры URL;
- в теме или плагине остался старый путь к файлу;
- внутренние ссылки ведут на несуществующий адрес;
- в sitemap попали старые URL после миграции.
Если у вас установлен SEO-плагин, он может показывать ошибки сканирования и редиректы. Но даже без него можно быстро проверить конкретный адрес вручную: откройте URL в браузере и посмотрите код ответа через инструменты разработчика или curl.
curl -I https://example.com/staryj-url/В ответе важно увидеть не просто страницу, а именно HTTP-статус. Для редиректа нужен 301 или 308, для удалённого контента — 404 или 410.
Пошаговое решение: как настроить 301-редирект в WordPress
Есть три нормальных варианта: через плагин, через серверную конфигурацию или кодом в теме/мини-плагине. Для большинства сайтов удобнее плагин, но если редиректов немного и нужен контроль, код часто надёжнее.
| Способ | Когда подходит | Плюс | Минус |
|---|---|---|---|
| Плагин редиректов | Редиректов много, нужен интерфейс | Быстро настраивать без кода | Дополнительная нагрузка и риск ошибок в массовых правилах |
| .htaccess / nginx | Есть доступ к серверу и понятные правила | Быстро работает до загрузки WordPress | Нужно аккуратно редактировать конфиг |
| Код в WordPress | Небольшое число точечных редиректов | Можно хранить рядом с логикой проекта | Не подходит для сложных массовых схем |
Вариант 1: точечный редирект кодом
Если нужно перенаправить один старый URL на новый, можно добавить правило в мини-плагин или functions.php дочерней темы. Лучше использовать мини-плагин, чтобы не потерять логику при смене темы.
<?php
add_action('template_redirect', function () {
if (is_admin()) {
return;
}
$request_uri = isset($_SERVER['REQUEST_URI']) ? wp_unslash($_SERVER['REQUEST_URI']) : '';
if ($request_uri === '/staryj-url/' || $request_uri === '/staryj-url') {
wp_redirect(home_url('/novyj-url/'), 301);
exit;
}
});Этот вариант годится для одного-двух адресов. Если редиректов десятки, лучше не плодить условия в шаблоне, а вынести их в отдельный список или использовать серверные правила.
Вариант 2: редирект через плагин
Плагин удобен тем, что позволяет видеть цепочки, 404-логи и массово управлять правилами. Но не стоит включать всё подряд: если плагин начинает собирать слишком много логики, он превращается в ещё один слой, который надо сопровождать.
При настройке проверьте:
- тип редиректа — именно
301, если перенос постоянный; - нет ли цепочки из нескольких переходов;
- не ведёт ли правило на нерелевантную страницу;
- не конфликтует ли редирект с кэшем.
Вариант 3: серверный редирект
Если сайт работает на Apache, правило можно задать в .htaccess. Это быстрее, чем прогонять запрос через WordPress, и полезно для часто запрашиваемых старых URL.
Redirect 301 /staryj-url/ https://example.com/novyj-url/На nginx логика задаётся в конфигурации сервера. Формат зависит от вашей сборки, поэтому правило лучше проверять на тестовом стенде перед публикацией.
Когда 301 не нужен и лучше оставить 404 или 410
Редирект — не универсальная заплатка. Если старый адрес не имеет прямого аналога, а контент удалён без замены, перенаправление на главную только ухудшит поведение пользователя. В таких случаях 404 или 410 честнее.
Практически это выглядит так:
- 301 — страница переехала на новый адрес или есть точный аналог;
- 404 — адрес не существует, но вы не хотите явно фиксировать окончательное удаление;
- 410 — контент удалён окончательно и возвращать его не планируется.
Если вы массово удалили старые страницы, 410 иногда помогает быстрее убрать их из повторного обхода, но использовать его стоит только там, где это действительно оправдано.
Проверка результата после внедрения
После настройки редиректа не ограничивайтесь открытием страницы в браузере. Браузер может показать уже закэшированный результат, а вам нужен именно HTTP-ответ.
- Проверьте статус старого URL через
curl -I. - Убедитесь, что ответ —
301, а не302. - Проверьте конечный адрес: он должен открываться без дополнительного редиректа.
- Посмотрите, не появилась ли цепочка
URL A → URL B → URL C. - Обновите кэш сайта и, если нужно, кэш CDN.
curl -I https://example.com/staryj-url/
curl -I https://example.com/novyj-url/Если у вас подключён Search Console, позже проверьте, исчез ли старый URL из отчётов об ошибках. Это не происходит мгновенно, поэтому ориентируйтесь на повторное сканирование, а не на один ручной запрос.
Частые ошибки и как их исправить
Редирект ведёт на главную
Так делают, когда не знают, куда отправить URL. Проблема в том, что поисковик и пользователь получают нерелевантную страницу. Исправление простое: подберите ближайший аналог по смыслу или оставьте 404/410.
Используется 302 вместо 301
302 означает временное перенаправление. Если страница переехала навсегда, это неверный сигнал для поисковых систем. Проверьте настройки плагина или код, где указан тип редиректа.
Возникает цепочка редиректов
Часто это случается после нескольких миграций. Например, старый адрес сначала ведёт на промежуточный, а потом уже на новый. Цепочку нужно сокращать до одного перехода.
Редирект ломается из-за кэша
Если сайт использует кэш страницы или CDN, старое правило может какое-то время не применяться. После изменений очистите кэш на уровне WordPress, сервера и CDN, если он есть.
Правило конфликтует с другими правилами
Иногда более общее правило перехватывает запрос раньше точечного. Это особенно заметно в .htaccess и в плагинах редиректов. Сначала проверяйте порядок правил, потом — регулярные выражения.
Чек-лист перед публикацией редиректов
- Старый URL действительно больше не нужен в прежнем виде.
- Есть точный новый адрес или осознанно выбран 404/410.
- Редирект не создаёт цепочку.
- Ответ сервера —
301, если перенос постоянный. - Внутренние ссылки уже обновлены.
- Кэш очищен.
- Страница открывается без ошибок в браузере и через
curl.
Практические советы по безопасности и производительности
Не храните десятки редиректов прямо в шаблоне темы. Для проекта это неудобно: при смене темы правила потеряются. Если редиректов немного, вынесите их в мини-плагин. Если их много, используйте серверные правила или специализированный инструмент.
Если вы одновременно чистите сайт от дублей, старых архивов и мусорных URL, удобно делать это вместе с технической оптимизацией. В экосистеме WPShop для таких задач часто используют Clearfy Pro: он помогает с дублями, служебными страницами и базовой чисткой сайта. Но даже с плагином логику редиректов всё равно нужно проверять вручную, а не полагаться на автоматические настройки.
И ещё один момент: не редиректите всё подряд на одну страницу ради «сохранения трафика». Такой подход обычно маскирует проблему, а не решает её. Лучше один раз пройтись по списку 404, чем потом разбирать цепочки и нерелевантные переходы.