Страница 404 и редиректы в WordPress
В WordPress страницу 404 отдаёт шаблон 404.php вашей темы (в блочных темах — шаблон «404» в редакторе сайта), а HTTP-статус 404 движок выставляет сам. Редиректы 301 делают плагином или правилами в .htaccess / nginx.
Обновлено 11 октября 2026 г.
Как WordPress выбирает шаблон 404
Когда запрос не соответствует ни записи, ни странице, ни архиву, WordPress помечает его как 404, отдаёт заголовок 404 Not Found и ищет шаблон по иерархии: сначала 404.php, затем index.php темы. Поэтому в обычной теме достаточно положить файл 404.php в папку темы.
Менять файлы стандартной темы напрямую не стоит: обновление затрёт правки. Создайте дочернюю тему и добавьте 404.php туда.
<?php get_header(); ?>
<main id="primary">
<h1>Страница не найдена</h1>
<p>Возможно, адрес изменился или страница удалена. Попробуйте поиск или вернитесь на главную.</p>
<?php get_search_form(); ?>
<p><a href="<?php echo esc_url( home_url( '/' ) ); ?>">На главную</a></p>
</main>
<?php get_footer(); ?>Блочные темы
В блочных темах (Full Site Editing) вместо PHP-файла используется шаблон «404» (templates/404.html). Его редактируют в консоли WordPress в разделе «Внешний вид» → «Редактор» → «Шаблоны». Если шаблона нет, используется запасной шаблон из иерархии.
Как проверить, что отдаётся настоящий 404
Откройте несуществующий адрес, например /net-takoy-stranicy-12345/, и проверьте код ответа в проверке HTTP-статуса. Должно быть 404, а не 200 или 301 на главную. Подробнее о том, чем это грозит, — в статье про soft 404.
Настройка 301-редиректов в WordPress
Есть три способа, от простого к надёжному.
- Плагин. Подходят «Redirection», раздел редиректов в SEO-плагинах (Yoast SEO Premium, Rank Math). Вы указываете старый и новый URL и тип 301; правила хранятся в базе данных.
- `.htaccess` (Apache). Правила работают до загрузки PHP и WordPress, поэтому быстрее.
- Конфиг nginx. Если сайт на nginx,
.htaccessне читается — правила пишутся вserver {}. Подробно: редиректы в nginx.
Свои правила в .htaccess ставьте выше блока # BEGIN WordPress: этот блок WordPress может перезаписать при сохранении постоянных ссылок, а всё внутри маркеров он считает своим.
# Свои редиректы — выше блока WordPress
Redirect 301 /staraya-stranica/ https://example.com/novaya-stranica/
RedirectMatch 301 ^/blog/(\d{4})/(.*)$ /$2
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPressСписок правил для переноса сайта удобно собрать в генераторе редиректов. Синтаксис Apache разобран в руководстве по .htaccess.
Частые ошибки
- Массовый редирект всех 404 на главную. Для поиска это soft 404: URL отвечает 200 или 301, но контента по нему нет. Редиректьте только на соответствующую по смыслу страницу, остальное оставьте на 404.
- Страница 404 с кодом 200. Случается, если в
404.phpвручную вызватьstatus_header( 200 )или если кеширующий плагин или CDN подменяет статус. Проверяйте ответ извне, с очищенным кешем. - Редирект-цепочки. После нескольких смен структуры остаются цепочки
A → B → C. Правьте старые правила так, чтобы они вели сразу на конечный URL. - Забыли сохранить постоянные ссылки. После переноса или смены структуры записи могут отдавать 404. Откройте «Настройки» → «Постоянные ссылки» и нажмите «Сохранить» — WordPress пересоздаст правила перезаписи.
- Правила в плагине и в `.htaccess` одновременно. Они конфликтуют и создают бесконечные редиректы.
Как найти 404 в WordPress
- Отчёт об индексировании в Яндекс Вебмастере и Google Search Console: страницы со статусом «не найдено (404)».
- Журнал 404 в плагине «Redirection» — он записывает обращения к несуществующим URL.
- Логи сервера: в формате combined код ответа — девятое поле,
awk '$9 == 404 {print $7}' access.log | sort | uniq -c | sort -rn | head. - Проверка страницы на битые ссылки: проверка битых ссылок.
В логах WordPress много шума: боты стучатся в wp-login.php, xmlrpc.php, .env, .git. Эти запросы не нужно «исправлять», их нужно отделять от реальных ошибок. Подробнее — в статье про ошибку 404.
Подключение Monitor404 к WordPress
Monitor404 собирает 404 с отсевом ботов и показывает, какие битые URL ищут живые люди. Подключить трекер можно только на страницу 404 — добавьте вывод скрипта в functions.php (лучше дочерней темы):
add_action( 'wp_footer', function () {
if ( is_404() ) {
echo '<script src="https://collect.monitor404.ru/collect/ВАШ_ТОКЕН/script.js" async></script>';
}
} );Либо вставьте тег <script> прямо в 404.php перед get_footer(). Чтобы подключить трекер на все страницы и ловить soft 404, добавьте ?mode=auto к адресу скрипта и уберите условие is_404().
Частые вопросы
Где в WordPress находится страница 404?
В классической теме это файл 404.php в папке темы, в блочной — шаблон «404» в разделе «Внешний вид» → «Редактор» → «Шаблоны». Отдельной записи или страницы в админке для 404 нет.
Как сделать редирект в WordPress без плагина?
Добавьте строку Redirect 301 /старый-адрес/ https://example.com/новый-адрес/ в .htaccess выше блока # BEGIN WordPress. На nginx пропишите return 301 в нужном location.
Почему страница 404 в WordPress отдаёт код 200?
Чаще всего виноват плагин или тема, которые принудительно меняют статус или редиректят несуществующие URL на главную. Проверьте код ответа в проверке HTTP-статуса, отключите плагины по очереди и очистите кеш.
Можно ли редиректить все 404 на главную?
Нет, поисковые системы расценивают это как soft 404. Редирект уместен только на близкую по смыслу страницу; остальные несуществующие адреса должны отвечать 404 или 410.