Если вы сменили адрес страницы, удалили материал или объединили несколько публикаций в одну, старый URL нельзя просто бросить. Без постоянного редиректа 301 посетители будут попадать на 404, а поисковые системы со временем потеряют часть накопленного веса ссылки. В WordPress это можно сделать тремя рабочими способами: через плагин, через код в теме или через правила веб-сервера в .htaccess.
Ниже разберу, когда какой вариант удобнее, как настроить редирект без лишних рисков и как проверить, что он действительно отдаёт код ответа 301, а не временный 302.
Когда нужен именно 301-редирект
301 используют, когда старый адрес окончательно заменён новым. Это типичный случай после:
- смены структуры URL;
- переезда на новый раздел или новую страницу;
- удаления статьи с заменой на более свежий материал;
- объединения нескольких страниц в одну;
- переноса сайта на другой домен или поддомен.
Смысл 301 в том, что браузер, поисковый робот и большинство сервисов понимают: старый адрес больше не основной, а новый нужно считать каноническим. Если задача временная, например страница недоступна на время работ, нужен уже другой код ответа, обычно 302 или 307. Для переноса постоянного адреса берите именно 301.
Что выбрать: плагин, код или .htaccess
Все три способа работают, но подходят для разных ситуаций.
| Способ | Когда удобен | Что важно учесть |
|---|---|---|
| Плагин | Если нужно быстро настроить редиректы без правки файлов | Зависит от плагина, может добавлять нагрузку и требует контроля правил |
| Код в WordPress | Если нужен редирект на уровне темы или небольшого кастомного решения | Работает только когда загружается WordPress, не подходит для самых ранних редиректов |
.htaccess | Если сайт на Apache и нужен быстрый серверный редирект | Нужно аккуратно редактировать файл, ошибка может сломать доступ к сайту |
Если вы не уверены, с чего начать, для разового редиректа обычно проще плагин. Если редиректов много и они должны работать максимально рано, лучше серверный вариант. Если нужен один-два редиректа без установки лишнего плагина, можно обойтись кодом.
Способ 1: настроить 301-редирект через плагин
Это самый понятный путь для владельца сайта без доступа к серверной конфигурации. Подойдёт, если хостинг не даёт редактировать .htaccess или вы не хотите трогать код темы.
Обычно для этого используют плагин редиректов, например Redirection. После установки и активации в админке WordPress откройте раздел плагина и создайте новое правило:
- укажите старый URL в поле источника;
- укажите новый URL в поле назначения;
- выберите тип редиректа 301;
- сохраните правило и проверьте его в браузере.
Если плагин позволяет, задавайте путь без домена, например /staryj-url/ и /novyj-url/. Так меньше шансов ошибиться при смене домена или протокола. Для массовых перенаправлений удобнее использовать регулярные выражения, но включать их стоит только если вы понимаете, как они работают: одна неточная маска может отправить не туда целый набор страниц.
Плюс плагина в том, что вы видите список всех правил и можете быстро отключить ненужное. Минус — лишний слой логики внутри WordPress. Для нескольких редиректов это не критично, но если их сотни, серверный способ обычно практичнее.
Способ 2: сделать редирект 301 через код WordPress
Этот вариант подходит, когда редирект нужен без отдельного плагина, а править серверные файлы не хочется. Код можно добавить в файл functions.php дочерней темы или в собственный мини-плагин. Именно дочерняя тема безопаснее: при обновлении основной темы правило не пропадёт.
Перед изменениями сделайте резервную копию файла. Ошибка в PHP может привести к белому экрану или к недоступности админки.
Простой пример редиректа с одного адреса на другой:
add_action('template_redirect', function () {
if (is_page('old-page')) {
wp_redirect(home_url('/new-page/'), 301);
exit;
}
});Здесь is_page('old-page') проверяет страницу по слагу, а wp_redirect() отправляет пользователя на новый адрес с кодом 301. После вызова обязательно идёт exit, чтобы WordPress не продолжал выводить страницу.
Если нужно перенаправить конкретный URL, а не только страницу WordPress, можно проверять $_SERVER['REQUEST_URI']. Но такой код нужно писать аккуратно, чтобы не сломать работу сайта на разных адресах и с параметрами в строке запроса. Для большинства типовых задач достаточно проверки по слагу, ID записи или типу записи.
Этот способ хорош, когда редирект логически связан с темой или кастомной логикой сайта. Но если у вас много отдельных перенаправлений, код быстро становится неудобным для поддержки. Тогда лучше вынести правила в плагин или на уровень сервера.
Способ 3: настроить 301 в .htaccess
Если сайт работает на Apache или совместимом сервере с поддержкой .htaccess, это один из самых быстрых способов. Редирект отрабатывает до загрузки WordPress, поэтому не тратятся ресурсы PHP и базы данных.
Перед правкой файла обязательно сохраните его копию. Неверная строка в .htaccess может вызвать ошибку 500 и сделать сайт недоступным.
Для одного редиректа можно добавить правило такого вида:
Redirect 301 /old-page/ https://example.com/new-page/Если нужен более гибкий вариант через mod_rewrite, правило обычно выглядит так:
RewriteEngine On
RewriteRule ^old-page/?$ https://example.com/new-page/ [R=301,L]Первый вариант проще и читается легче. Второй полезен, когда нужно больше контроля над шаблоном URL. Если у вас уже есть блок правил WordPress в .htaccess, не вставляйте редирект случайно внутрь чужого блока без понимания порядка обработки. Обычно такие правила размещают выше стандартного блока WordPress, чтобы редирект срабатывал раньше.
На Nginx .htaccess не используется, поэтому такой способ там не работает. В этом случае редирект настраивают в конфигурации сервера или через плагин/код внутри WordPress.
Как не потерять трафик и не создать цепочку редиректов
Самая частая ошибка — направить старый URL не сразу на конечную страницу, а через промежуточный адрес. Например, /old/ ведёт на /temp/, а потом уже на /new/. Такая цепочка замедляет загрузку и размывает сигнал для поисковых систем. Лучше сразу отправлять на конечный адрес.
Ещё одна типичная проблема — редирект на главную страницу вместо релевантной замены. Это допустимо только если действительно нет подходящего аналога. Если вы удалили статью, но есть похожий материал, лучше вести пользователя туда, где он найдёт нужную информацию.
Если меняется только адрес, а содержание остаётся тем же, редирект должен быть один к одному: старая статья на новую статью, старая категория на новую категорию, старый товар на новый товар. Чем точнее соответствие, тем меньше потерь в трафике и поведенческих сигналах.
Как проверить, что редирект работает правильно
После настройки не ограничивайтесь простым открытием ссылки в браузере. Браузер может скрывать детали, а вам нужен именно код ответа.
Проверьте три вещи:
- старый URL открывается не напрямую, а переходит на новый;
- сервер отдаёт статус
301, а не302; - новый адрес открывается без дополнительного промежуточного перехода.
Удобнее всего проверить это через инструменты разработчика в браузере, онлайн-проверку заголовков или команду curl, если вам комфортно работать с консолью. Например:
curl -I https://example.com/old-page/В ответе должен быть заголовок со статусом HTTP/1.1 301 Moved Permanently или аналогичный для вашей версии сервера. Если видите 302, значит редирект временный. Если видите сразу 200, правило не сработало.
После проверки откройте новый адрес и убедитесь, что он не перенаправляется дальше. Если редиректов несколько, сначала исправьте цепочку, а уже потом обновляйте ссылки внутри сайта и в sitemap, если он у вас используется.
Что делать после настройки
Когда редирект уже работает, обновите внутренние ссылки на сайте, чтобы не гонять пользователей и роботов через старый адрес. Если старая страница была в меню, блоках, кнопках или в контенте других записей, замените ссылку на новую вручную. Это уменьшит число лишних переходов и ускорит обход сайта.
Если вы массово меняли структуру URL, полезно пройтись по основным страницам сайта и проверить, не осталось ли старых ссылок в шаблонах, виджетах и произвольных блоках. Редирект решает проблему для внешних ссылок и закладок, но внутренние ссылки лучше привести в порядок отдельно.
Для большинства задач в WordPress достаточно одного из трёх вариантов: плагин — когда нужно быстро и без кода, .htaccess — когда важна серверная скорость и у вас Apache, код — когда редирект должен быть частью логики темы или небольшого кастомного решения. Главное правило одно: старый адрес должен вести сразу на правильный новый URL с кодом 301, без цепочек и без временного статуса.