Monitor404

Страница 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 туда.

wp-content/themes/ваша-тема/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 может перезаписать при сохранении постоянных ссылок, а всё внутри маркеров он считает своим.

.htaccess
# Свои редиректы — выше блока 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 (лучше дочерней темы):

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.

Читайте также