Битые ссылки в WordPress обычно всплывают не сразу: часть ведёт на удалённые записи, часть — на старые адреса после смены структуры, часть — на файлы из темы, которые уже не существуют. Проблема не только в 404 для пользователя. Такие ссылки мешают индексации, портят внутреннюю перелинковку и создают лишний шум в логах.
Ниже — рабочий сценарий без выдуманных инструментов: как быстро найти проблемные URL, где именно их править и как убедиться, что после исправления сайт действительно перестал отдавать 404.
Когда стоит искать битые ссылки вручную
Если сайт небольшой, а SEO-плагин уже показывает единичные ошибки, проще не ставить ещё один сканер, а пройтись по источникам ссылок точечно. Это особенно полезно, когда 404 появляются после:
- смены структуры постоянных ссылок;
- удаления записей, страниц или файлов;
- переноса сайта с другого домена;
- обновления темы, в которой изменились пути к изображениям, CSS или шаблонам;
- импорта контента из старого сайта с устаревшими URL.
Диагностика проблемы: где искать источник 404
Сначала важно понять, откуда именно идёт битая ссылка. Один и тот же URL может быть прописан в нескольких местах: в тексте записи, в меню, в виджете, в шаблоне темы или в произвольном поле.
Проверка через отчёты сервера и браузер
Самый надёжный старт — посмотреть, какие адреса реально запрашиваются и дают 404. Если есть доступ к логам веб-сервера, ищите строки с кодом 404. Если логов нет, откройте проблемную страницу в браузере и проверьте ссылки через инструменты разработчика или расширение для просмотра HTTP-статусов.
Для быстрой проверки конкретного URL можно использовать curl:
curl -I https://example.com/staryy-url/Если в ответе видите HTTP/2 404 или HTTP/1.1 404 Not Found, ссылка действительно битая. Если приходит редирект, сначала проверьте его цепочку: иногда проблема не в 404, а в лишнем переходе через несколько адресов.
Проверка в админке WordPress
Дальше смотрим типовые места:
- записи и страницы в редакторе Gutenberg;
- произвольные HTML-блоки;
- меню в разделе Внешний вид → Меню;
- виджеты и блоки в сайдбаре или футере;
- настройки темы, где вручную вставлены ссылки;
- шаблоны
header.php,footer.php,sidebar.phpи части шаблонов.
Если ссылка встречается в контенте, её можно заменить прямо в редакторе. Если она зашита в шаблон, править нужно уже код темы или дочерней темы.
Пошаговое решение: как убрать битые ссылки без плагина
Ниже — последовательность, которая не ломает сайт и позволяет контролировать изменения.
Шаг 1. Найдите все вхождения старого URL
Если у вас есть доступ к базе данных, сначала проверьте, где именно хранится старый адрес. Для этого удобно использовать поиск по базе через WP-CLI, если он доступен:
wp search-replace 'https://example.com/staryy-url/' 'https://example.com/novyy-url/' --dry-run--dry-run покажет, что будет изменено, но ничего не запишет. Это безопасный способ понять масштаб правок. Если WP-CLI нет, ищите вручную через админку и редактор тем.
Шаг 2. Исправьте ссылки в контенте
Если URL находится в записи или странице, замените его на актуальный. Для массовых правок лучше не делать это через визуальный редактор по одной странице, если ссылок много. В этом случае безопаснее использовать поиск и замену на уровне базы, но только после резервной копии.
Пример безопасного поиска и замены в тексте записи через PHP-фильтр — если нужно точечно обработать контент перед выводом:
add_filter('the_content', function ($content) {
$old = 'https://example.com/staryy-url/';
$new = 'https://example.com/novyy-url/';
if (strpos($content, $old) === false) {
return $content;
}
return str_replace($old, $new, $content);
});Такой подход годится только для временной логики или специфических случаев. Для постоянного решения лучше исправить источник данных, а не подменять контент на лету.
Шаг 3. Обновите меню и шаблоны
Если битая ссылка сидит в меню, меняйте её через интерфейс WordPress. Если она в шаблоне, проверьте, не прописан ли старый путь в PHP-файле темы. Например, ссылка на страницу контактов может быть захардкожена так:
<a href="https://example.com/kontakty/">Контакты</a>Лучше заменить её на динамический вызов:
<a href="<?php echo esc_url( home_url('/kontakty/') ); ?>">Контакты</a>Так вы уменьшите риск поломки при смене домена или структуры URL.
Шаг 4. Проверьте медиафайлы и старые вложения
Частая причина 404 — изображения и документы, которые были удалены или перенесены. В тексте это выглядит как обычная ссылка на файл, но при клике пользователь получает ошибку. Откройте запись в редакторе, проверьте все ссылки на PDF, архивы, изображения и замените их на актуальные.
Шаг 5. Настройте редирект только там, где это оправдано
Если страница была удалена окончательно, а на неё есть внешние ссылки или трафик из поиска, лучше не оставлять 404, а сделать 301-редирект на ближайшую релевантную страницу. Но редирект не должен подменять всё подряд на главную — это плохая практика для SEO и для пользователя.
Пример через template_redirect для одного конкретного старого URL:
add_action('template_redirect', function () {
if (is_admin()) {
return;
}
if (trim($_SERVER['REQUEST_URI'], '/') === 'staryy-url') {
wp_redirect(home_url('/novyy-url/'), 301);
exit;
}
});Если редиректов много, лучше настроить их на уровне сервера или через проверенный механизм в .htaccess/Nginx-конфиге, а не плодить логику в теме.
Сравнение подходов: что выбрать в реальной задаче
| Подход | Когда подходит | Минус |
|---|---|---|
| Ручная правка в редакторе | 1–5 ссылок в контенте | Долго при большом объёме |
| Поиск и замена через WP-CLI | Массовая замена URL после переезда | Нужен доступ к консоли и аккуратность |
| Редирект на сервере | Старый адрес должен сохранять трафик | Нужно следить за цепочками и конфликтами |
Как проверить, что решение сработало
После правок не ограничивайтесь визуальной проверкой страницы. Нужна короткая техническая валидация.
- Откройте старый URL и убедитесь, что он ведёт на нужную страницу или отдаёт корректный 404, если редирект не нужен.
- Проверьте HTTP-статус через
curl -Iили DevTools. - Обновите страницу с внутренними ссылками и кликните по ним из разных мест сайта.
- Проверьте карту сайта, если URL был удалён из индексации.
- Посмотрите логи 404 через 1–2 дня: новые обращения к старому адресу должны исчезнуть или сократиться.
Если после замены ссылка всё ещё ведёт на старый адрес, проблема обычно в кэше: страницы, объектном кэше, CDN или кэше браузера. Очистите кэш на всех уровнях и проверьте повторно.
Частые ошибки и как их исправить
Редирект на главную вместо релевантной страницы
Это самая частая ошибка. Пользователь ждёт конкретный контент, а попадает на общий экран. Для SEO это тоже слабое решение. Если аналогичной страницы нет, лучше оставить 404 или сделать редирект на ближайшую по смыслу категорию.
Замена URL только в одном месте
Старый адрес может быть в записи, в меню и в шаблоне одновременно. Если исправили только контент, 404 останется в футере или блоке темы. Всегда проверяйте все источники ссылки.
Массовая замена без резервной копии
Это рискованно даже для простой операции. Перед search-replace или правкой базы сделайте бэкап. Если что-то пойдёт не так, откат будет быстрее, чем ручное восстановление десятков записей.
Игнорирование внешних ссылок
Если на старый URL ссылаются другие сайты, простая правка внутри WordPress не решит проблему. В таком случае нужен редирект или, если страница больше не актуальна, понятная замена с сохранением смысла.
Практические советы по безопасности и производительности
Не храните логику редиректов и массовых замен в активной теме, если это долгосрочное правило. Для небольших точечных правок это допустимо, но при смене темы код потеряется. Лучше вынести такие вещи в дочернюю тему или в небольшой mu-plugin.
Если сайт большой, не запускайте тяжёлые поиски по базе на живом трафике в часы пик. Поиск и замена по сериализованным данным, массовые SQL-запросы и пересборка кэша могут временно нагрузить сервер.
Если вам нужно регулярно чистить сайт от дублей, устаревших URL и мусорных настроек, имеет смысл посмотреть в сторону инструментов вроде Clearfy Pro: у него есть набор функций для технической чистки WordPress и контроля дублей. Но даже с плагином базовую диагностику всё равно лучше делать вручную, чтобы понимать, что именно исправляется.
Главная идея простая: сначала находите источник битой ссылки, потом исправляете его там, где он реально хранится, и только после этого добавляете редирект, если он действительно нужен. Такой порядок экономит время и не создаёт новых 404 вместо старых.