После смены URL у страниц в WordPress чаще всего ломаются не сами страницы, а старые ссылки: из меню, из поиска, из внешних сайтов, из sitemap и из внутренних материалов. В результате пользователь видит 404, а поисковик продолжает ходить по старому адресу. Если таких URL немного, проблему можно закрыть вручную. Если переезд затронул десятки страниц, нужен понятный порядок: сначала найти источник старых запросов, потом поставить редиректы, затем проверить, что они отрабатывают без цепочек и ошибок.
Когда это действительно проблема, а когда нет
404 после изменения URL не всегда означает аварию. Если старый адрес больше нигде не используется и на него нет внешних ссылок, можно оставить его отдавать 404 или 410. Но если URL уже был в индексе, попадал в рассылки, в закладки или в материалы на сайте, лучше настроить постоянный редирект на новый адрес. Это особенно важно для страниц с трафиком, входящих ссылок и карточек, которые участвуют во внутренней перелинковке.
Типичные сценарии
- поменяли
/category/post-name/на короткий URL и забыли про старые ссылки; - перенесли страницу в другую рубрику, и старый адрес перестал открываться;
- изменили слаг у записи после публикации;
- обновили структуру постоянных ссылок и получили пачку 404 в логах;
- удалили страницу, но на неё продолжают вести внутренние ссылки.
Диагностика: откуда берутся 404
Сначала не трогайте редиректы наугад. Нужно понять, какие именно адреса отдают ошибку и кто на них ссылается. Это экономит время и помогает не создать лишние цепочки редиректов.
Что проверить в первую очередь
- журнал 404 в аналитике или в серверных логах;
- отчёт «Страницы с ошибкой» в Google Search Console;
- внутренние ссылки в меню, блоках, виджетах и контенте;
- XML-карту сайта и старые URL в sitemap;
- внешние ссылки, если страница получала трафик из поиска или соцсетей.
Если у вас есть доступ к серверным логам, быстрый поиск по 404 помогает увидеть повторяющиеся адреса. Для Nginx это обычно делается через grep по access/error log, для Apache — по access.log. Важно смотреть не только сам старый URL, но и реферер, если он записывается: так проще понять, это внутренняя ошибка или внешний источник.
Как исправить 404 после смены URL: рабочая схема
Надёжный вариант — поставить 301-редирект со старого адреса на новый. Для единичных страниц это можно сделать через плагин редиректов, для массового переезда удобнее использовать правила на уровне сервера или небольшой код в теме/плагине. Если URL менялись системно, лучше не править каждый адрес вручную в админке, а собрать таблицу соответствий и применить её централизованно.
Вариант 1: редирект через PHP в WordPress
Подходит, если нужно быстро закрыть несколько старых адресов и вы не хотите сразу лезть в конфиг сервера. Код лучше размещать в небольшом mu-plugin или в собственном плагине, а не в functions.php активной темы.
<?php
/**
* Plugin Name: Old URL Redirects
*/
add_action('template_redirect', function () {
$path = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
$map = [
'staryj-url-stranicy' => 'novyj-url-stranicy',
'uslugi/seo-audit' => 'uslugi/texnicheskij-audit',
];
if (isset($map[$path])) {
wp_redirect(home_url('/' . $map[$path] . '/'), 301);
exit;
}
});Этот способ годится для ограниченного списка адресов. Если редиректов много, массив в коде быстро станет неудобным. Тогда лучше вынести соответствия в отдельный файл или использовать плагин, где можно импортировать правила.
Вариант 2: редирект на уровне сервера
Если сайт работает на Apache, правило можно добавить в .htaccess. Это быстрее, чем обработка через WordPress, и не зависит от загрузки темы. Для Nginx правило пишется в конфиге сервера. Ниже пример для Apache:
Redirect 301 /staryj-url-stranicy/ https://example.com/novyj-url-stranicy/
Redirect 301 /uslugi/seo-audit/ https://example.com/uslugi/texnicheskij-audit/Плюс этого подхода в том, что редирект срабатывает до загрузки WordPress. Минус — нужен доступ к конфигурации сервера и аккуратность: одна лишняя косая черта или неверный путь создадут новые ошибки.
Вариант 3: плагин редиректов
Если переезд делал редактор или контент-менеджер, а не разработчик, плагин часто практичнее. Он позволяет быстро создать правило, посмотреть статистику срабатываний и потом удалить неиспользуемые записи. Но даже в этом случае важно не плодить цепочки вида старый URL → промежуточный URL → новый URL. Лучше сразу вести на конечный адрес.
| Подход | Когда подходит | Ограничение |
|---|---|---|
| Код в WordPress | Несколько точечных URL | Нужно поддерживать массив соответствий |
| .htaccess / Nginx | Массовый переезд | Требуется доступ к серверу |
| Плагин редиректов | Когда редиректы ведёт редакция | Легко накопить лишние правила |
Пошагово: как не сломать трафик при смене URL
Если у вас уже есть список старых и новых адресов, действуйте по порядку. Это снижает риск случайно закрыть нужную страницу или отправить поисковик по цепочке редиректов.
- Соберите список старых URL из Search Console, логов и внутреннего поиска по сайту.
- Проверьте, существует ли новый адрес и отдаёт ли он 200 OK.
- Настройте 301-редирект только на конечную страницу.
- Обновите внутренние ссылки в меню, хлебных крошках, блоках и контенте.
- Пересоберите sitemap, если он генерируется автоматически.
- Проверьте, нет ли редирект-цепочек и циклов.
Что обновить внутри WordPress
Сам редирект не решает проблему полностью, если на старый URL продолжают вести внутренние ссылки. После смены адреса проверьте:
- меню навигации;
- ссылки в записях и страницах;
- виджеты и блоки в редакторе;
- хлебные крошки, если они формируются плагином;
- ссылки в шаблонах темы;
- автоматические блоки «похожие материалы» и списки рубрик.
Как проверить, что решение сработало
Проверка должна быть технической, а не визуальной. Откройте старый адрес и убедитесь, что он отдаёт 301, а в заголовке Location указан конечный URL. Если редирект настроен правильно, браузер сразу попадёт на новую страницу без промежуточных переходов.
Проверка через curl
curl -I https://example.com/staryj-url-stranicy/В ответе ищите строки вроде HTTP/1.1 301 Moved Permanently и Location: https://example.com/novyj-url-stranicy/. Если видите сначала 301, потом ещё один 301, значит есть цепочка. Если вместо редиректа приходит 404, правило не сработало или путь указан неверно.
Проверка в браузере и Search Console
- откройте старый URL в режиме инкогнито;
- проверьте, что новый адрес открывается без ошибки;
- посмотрите отчёт по индексированию в Search Console через несколько дней после правки;
- убедитесь, что старый URL больше не растёт в списке 404;
- проверьте sitemap: в нём должны быть только актуальные адреса.
Частые ошибки и как их исправить
Редирект ведёт на промежуточную страницу
Такое часто случается, когда старый URL сначала отправляют на рубрику, а потом вручную меняют адрес страницы. В итоге поисковик и пользователь проходят через две переадресации. Исправление простое: старый URL должен вести сразу на финальный адрес.
Используется 302 вместо 301
Временный редирект не подходит для постоянной смены адреса. Если страница переехала навсегда, нужен 301. Иначе поисковые системы могут дольше держать старый URL в индексе.
Редирект настроен только в админке, но не в шаблоне
Иногда разработчик меняет ссылку в одном месте, а старый адрес остаётся в меню, в блоке или в шаблоне. Внешне кажется, что всё исправлено, но 404 продолжают появляться. Нужно искать ссылку по всему сайту, а не только в редакторе записи.
Сделали правило слишком общим
Опасный случай — редирект по шаблону, который задевает лишние URL. Например, правило для старой рубрики начинает отправлять на новый раздел и страницы пагинации. Перед публикацией проверяйте несколько адресов из этой же группы, а не только один тестовый URL.
Безопасность и производительность
Если редиректов много, не стоит держать их в основном шаблоне темы. При каждом запросе WordPress будет выполнять лишнюю логику, а при ошибке в коде можно сломать весь сайт. Для постоянных правил лучше использовать серверный уровень или отдельный mu-plugin. Это проще отключить и легче сопровождать после обновления темы.
Ещё один практический момент: не оставляйте старые URL без контроля. Если на них идёт заметный трафик, 404 будут расходовать краулинговый бюджет и создавать шум в отчётах. Если страница удалена окончательно и замены нет, можно осознанно отдавать 410, но только когда вы уверены, что адрес больше не нужен.
Мини-чек-лист перед публикацией редиректов
- старый URL открыт и точно больше не должен существовать;
- новый URL отдаёт
200 OK; - редирект ведёт сразу на конечный адрес;
- нет циклов и цепочек;
- внутренние ссылки обновлены;
- sitemap содержит только актуальные страницы;
- страница не потеряла важный трафик из-за случайной замены на нерелевантный адрес.
Если нужен инструмент для быстрой чистки технических хвостов на сайте, в том числе лишних элементов и SEO-мелочей, можно посмотреть Clearfy Pro. Но для редиректов всё равно важнее не плагин сам по себе, а аккуратная карта соответствий и проверка результата.