WordPress Notes WPDream

Как настроить 404-страницу в WordPress без плагина: шаблон, редиректы и проверка

404-страница — это не просто «страница ошибки». В WordPress она часто решает сразу три задачи: не терять пользователя, не плодить мусор в индексе и не маскировать реальные проблемы с URL. Если на сайте много старых ссылок, удалённых записей или изменённых слагов, нормальная 404-страница полезнее, чем автоматический редирект «всё на главную».

Ниже — рабочий способ настроить 404 без плагина: через шаблон темы, с аккуратной логикой редиректов для отдельных случаев и с проверкой результата.

Когда 404-страница в WordPress работает неправильно

Сначала стоит понять, что именно сломано. На практике встречаются три сценария:

  • WordPress показывает стандартную 404, но она не соответствует дизайну сайта.
  • Удалённые страницы уводят на главную через редирект, и ошибка скрывается.
  • Сервер отдаёт 200 OK вместо 404, хотя контент не найден.

Последний вариант особенно неприятен для SEO: поисковик видит страницу как существующую, хотя по смыслу это ошибка. Проверять нужно не только визуально, но и по HTTP-статусу.

Быстрая диагностика

Откройте заведомо несуществующий URL, например /this-page-should-not-exist. Затем проверьте:

  • есть ли в браузере именно 404-страница, а не главная;
  • не срабатывает ли редирект на другой адрес;
  • какой статус возвращает сервер.

Проверить статус можно через DevTools в браузере, через curl или через онлайн-проверку заголовков.

curl -I https://example.com/this-page-should-not-exist

В ответе должен быть статус 404 Not Found. Если видите 200 OK или цепочку редиректов, сначала исправляйте логику шаблона и перенаправлений, а уже потом дизайн.

Как сделать свою 404-страницу в теме WordPress

В классической теме WordPress за 404 отвечает файл 404.php. Если его нет, WordPress может использовать fallback-логику темы, но для нормального контроля лучше создать отдельный шаблон.

Шаг 1. Создайте файл 404.php

Если у вас дочерняя тема, добавьте 404.php именно туда. Так обновление родительской темы не затрёт изменения. Минимальный шаблон может выглядеть так:

<?php get_header(); ?>

<main id="primary" class="site-main">
	<section class="error-404 not-found">
		<header class="page-header">
			<h1 class="page-title">Страница не найдена</h1>
		</header>

		<div class="page-content">
			<p>Проверьте адрес или воспользуйтесь поиском по сайту.</p>

			<form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>">
				<label>
					<span class="screen-reader-text">Поиск</span>
					<input type="search" class="search-field" placeholder="Поиск по сайту" value="<?php echo get_search_query(); ?>" name="s" />
				</label>
				<button type="submit" class="search-submit">Искать</button>
			</form>
		</div>
	</section>
</main>

<?php get_footer(); ?>

Это базовый вариант. Его уже достаточно, чтобы страница выглядела как часть сайта, а не как системная заглушка.

Шаг 2. Добавьте полезные элементы

На 404-странице обычно хорошо работают:

  • поиск по сайту;
  • ссылка на главную;
  • популярные рубрики или последние записи;
  • контактная ссылка, если сайт коммерческий;
  • короткое пояснение без технического жаргона.

Не стоит перегружать страницу десятком блоков. 404 должна помогать выйти из тупика, а не превращаться в ещё одну витрину.

Когда нужен редирект, а когда лучше оставить 404

Редирект имеет смысл только если у удалённой страницы есть очевидная замена. Например, старая статья переехала на новый URL, а товар или запись были объединены в другой материал. Если замены нет, редирект на главную — плохая практика: пользователь не получает ответа, а поисковая система теряет сигнал об удалённой странице.

ПодходКогда использоватьКомпромисс
Оставить 404Страница удалена без заменыПользователь видит ошибку, но это честный сигнал для поиска
301-редиректЕсть точная новая версия страницыНужно поддерживать карту соответствий URL
Редирект на главнуюПочти никогдаСкрывает проблему и ухудшает поведение пользователя

Как добавить точечный редирект без плагина

Если нужно перенаправить только конкретный старый URL, делайте это через template_redirect. Так вы не вмешиваетесь в общую логику 404 и не ломаете остальные страницы.

<?php
add_action( 'template_redirect', function () {
	if ( is_admin() ) {
		return;
	}

	$request_uri = isset( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : '';

	if ( $request_uri === '/old-article/' ) {
		wp_redirect( home_url( '/new-article/' ), 301 );
		exit;
	}

	if ( $request_uri === '/old-category/page/2/' ) {
		wp_redirect( home_url( '/category/news/' ), 301 );
		exit;
	}
} );

Здесь важно не делать массовые редиректы по шаблону «все 404 на главную». Если URL не совпал с заранее известным старым адресом, страница должна остаться 404.

Что проверить после добавления редиректа

  • старый URL отдаёт 301 Moved Permanently;
  • новый URL открывается без дополнительной цепочки редиректов;
  • не возникает петля, когда новый адрес снова попадает в условие;
  • не ломаются параметры запроса и канонические адреса.

Проверка результата после внедрения

После настройки проверьте не только внешний вид, но и техническое поведение.

  1. Откройте несуществующий URL и убедитесь, что отображается ваш шаблон 404.php.
  2. Проверьте HTTP-статус через curl -I или DevTools.
  3. Проверьте старый URL, для которого добавлен редирект, и убедитесь, что он отдаёт 301.
  4. Посмотрите, нет ли лишних редиректов в цепочке.
  5. Если сайт кэшируется, очистите кэш страницы и серверный кэш.

Если вы используете CDN или плагин кэширования, 404 может временно показываться некорректно из-за старой версии страницы. В таком случае проверяйте результат в режиме инкогнито и после сброса кэша.

Частые ошибки и как их исправить

404-страница выглядит правильно, но статус 200

Обычно это значит, что тема или кастомный шаблон выводит контент, но не даёт WordPress понять, что это ошибка. Проверьте, не подменяете ли вы запрос вручную и не выводите ли страницу через обычный шаблон без 404.php.

Все несуществующие URL уводятся на главную

Такое часто делают через слишком общий template_redirect или через плагин редиректов. Исправление простое: оставьте редирект только для конкретных адресов, а для остальных не вмешивайтесь.

Редирект зацикливается

Это бывает, когда старый и новый URL попадают под одно и то же условие. Перед редиректом сравнивайте точный путь, а не размытые совпадения по строке.

Шаблон не подхватывается

Проверьте, что файл называется именно 404.php, лежит в активной теме или дочерней теме и не перекрывается конструктором страниц. В некоторых темах есть собственные шаблоны ошибок, и их нужно редактировать отдельно.

Безопасность и производительность: что учесть

Для 404-страницы важны две вещи: не создавать лишнюю нагрузку и не раскрывать лишнюю информацию. Не выводите на ней технические детали, пути к файлам или внутренние ошибки PHP. Пользователю это не помогает, а лишние данные могут быть полезны только для атакующего.

Если вы добавляете блоки «похожие записи» или «популярные статьи», не делайте тяжёлые запросы на каждом 404-хите. Лучше ограничиться простым поиском, несколькими ссылками или заранее подготовленным списком. Для часто посещаемых сайтов это заметно снижает лишнюю нагрузку.

Если нужно централизованно чистить сайт от дублей, мусорных URL и лишних технических элементов, иногда удобнее подключить специализированный инструмент вроде Clearfy Pro, но для самой 404-логики базовый код в теме обычно надёжнее и прозрачнее: Clearfy Pro.

Мини-чек-лист перед публикацией

  • Файл 404.php лежит в активной теме или child theme.
  • Несуществующий URL отдаёт 404 Not Found, а не 200 OK.
  • Только нужные старые адреса редиректятся на новые.
  • Нет редиректа всех ошибок на главную.
  • Кэш очищен и проверка выполнена в инкогнито.
  • На странице есть поиск и понятный текст для пользователя.

Если после внедрения 404 всё ещё ведёт себя странно, начните с проверки темы и активных плагинов редиректов. В WordPress именно они чаще всего вмешиваются в обработку ошибок и подменяют ожидаемое поведение.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее