Как настроить 301 редирект в WordPress без плагинов

Если вы меняете адрес страницы, удаляете старый материал или склеиваете дубли, 301 редирект нужен сразу. Он сообщает браузеру и поисковым системам, что страница переехала навсегда, и помогает сохранить часть трафика, ссылочный вес и поведенческие сигналы. В WordPress это можно сделать без плагинов — на уровне веб-сервера или через PHP, если доступ к конфигам ограничен.

Ниже — рабочие варианты для Apache, Nginx и самого WordPress, а также то, как не получить цепочку редиректов и лишние 404.

Когда 301 редирект действительно нужен

301 ставят не «на всякий случай», а когда старый URL больше не должен открываться как основной:

  • страница получила новый адрес после редизайна или смены структуры;
  • пост удалён, но есть близкая замена;
  • две страницы дублируют друг друга и нужно оставить одну;
  • товар, услуга или статья объединены в один материал;
  • меняется домен, протокол или версия URL со слэшем/без слэша.

Если у страницы нет замены и контент действительно исчез навсегда, иногда корректнее вернуть 410 Gone, а не 301. Но если задача — сохранить переходы и передать пользователей на релевантную страницу, нужен именно 301.

Что выбрать: .htaccess, Nginx или PHP

Способ зависит от того, как устроен хостинг. В WordPress чаще всего сайт работает на Apache или Nginx, реже — на связке Nginx как прокси и Apache как backend.

СпособКогда подходитПлюсыМинусы
.htaccessApache, общий хостингБыстро, не требует плагинов и правки темыНе работает на Nginx
Конфиг NginxNginx или VPS с доступом к конфигамНадёжно и быстроНужен доступ к настройкам сервера
functions.phpЕсли нет доступа к серверуМожно сделать точечный редирект внутри WordPressЗависит от темы, не лучший вариант для большого числа правил

Если есть доступ к серверу, лучше настраивать редиректы на уровне веб-сервера. Это надёжнее, чем держать логику в теме WordPress.

301 редирект в Apache через .htaccess

На большинстве хостингов с Apache редиректы прописывают в файле .htaccess в корне сайта. Перед правкой сделайте резервную копию файла: одна ошибка в синтаксисе может уронить сайт или дать 500-ю ошибку.

Для простого перенаправления одной страницы используйте правило Redirect 301:

Redirect 301 /staryi-url/ https://example.com/novyi-url/

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

Если у вас уже есть стандартный блок WordPress с правилами # BEGIN WordPress и # END WordPress, не вставляйте свои редиректы внутрь этого блока. Лучше разместить их выше, чтобы WordPress не перезаписывал логику при обновлении постоянных ссылок.

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

RewriteEngine On
RewriteRule ^staryi-url/?$ https://example.com/novyi-url/ [R=301,L]

Флаг R=301 задаёт постоянный редирект, а L останавливает обработку правила после срабатывания.

301 редирект в Nginx

На Nginx редиректы задаются в конфигурации сайта, обычно в блоке server. Если у вас обычный виртуальный хостинг без доступа к конфигам, этот способ может быть недоступен — тогда остаётся правка через WordPress или обращение в поддержку.

Для одного адреса правило выглядит так:

location = /staryi-url/ {
    return 301 https://example.com/novyi-url/;
}

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

После изменения конфига Nginx его нужно проверить и перезагрузить. На сервере с доступом по SSH это обычно делают через проверку синтаксиса конфигурации и reload сервиса. Конкретные команды зависят от дистрибутива и прав доступа, поэтому если вы не уверены, лучше не экспериментировать на рабочем сайте без бэкапа и окна обслуживания.

Точечный редирект через functions.php

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

Добавьте код в functions.php дочерней темы или в собственный мини-плагин. Для одного старого адреса на новый:

add_action('template_redirect', function () {
    if (is_page('staryi-url')) {
        wp_redirect('https://example.com/novyi-url/', 301);
        exit;
    }
});

Здесь is_page('staryi-url') проверяет страницу по ярлыку. Если у вас запись, а не страница, можно использовать is_single() или проверку по ID. После wp_redirect() обязательно вызывайте exit, иначе WordPress продолжит отдавать контент старой страницы.

Есть и более точный вариант для редиректа по конкретному URL запроса:

add_action('template_redirect', function () {
    if (trim($_SERVER['REQUEST_URI'], '/') === 'staryi-url') {
        wp_redirect(home_url('/novyi-url/'), 301);
        exit;
    }
});

Такой код лучше использовать аккуратно: он зависит от текущего пути и может вести себя по-разному при наличии параметров, языковых префиксов и нестандартных правил ЧПУ.

Как избежать цепочек редиректов и лишних 404

Цепочка возникает, когда старый URL ведёт на промежуточный адрес, а тот — ещё дальше. Например: /old → /temp → /new. Для пользователя это лишняя задержка, а для поисковых систем — лишний обход. Правильнее сразу вести старый адрес на конечный новый URL.

Проверьте три вещи:

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

Если после переноса страницы старый адрес всё ещё даёт 404, значит правило не сработало или указана неверная маска. Частая ошибка — забытый слэш в конце, особенно если на сайте настроены канонические URL со слэшем.

Как проверить, что редирект работает правильно

Самый простой способ — открыть старый URL в браузере и посмотреть, куда он приводит. Но для проверки кода ответа этого мало. Нужен ответ сервера.

Если у вас есть доступ к терминалу, можно проверить заголовки командой:

curl -I https://example.com/staryi-url/

В ответе должен быть статус 301 Moved Permanently и заголовок Location с новым адресом. Если видите 200 OK, редиректа нет. Если 302, это временное перенаправление, и для переноса URL оно не подходит.

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

Что делать после переноса URL

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

Если старых URL много, сначала составьте список наиболее важных страниц: те, что получали трафик, внешние ссылки или были в меню. Именно их нужно закрывать редиректами в первую очередь. Остальные можно обработать по мере необходимости.

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

В WordPress без плагинов это решается вполне нормально: на Apache через .htaccess, на Nginx через конфиг сервера, а в самом WordPress — только для точечных случаев. Если делать редирект сразу на конечный URL и проверять ответ сервера, вы сохраните трафик и не создадите лишних 404.

Вам также может быть интересно:

  • Уроки WordPress от опытных разработчиков, более 500 материалов.
  • Вопросы и ответы по вордпресс. Здесь вы можете задать свой вопрос и получить ответ от сообщества.
  • Еще один ресурс о ВП с вопросами и ответами от пользователей.
Как сделать уникальные URL для таксономий в WordPress без дублирования
28.09.2026
Как создать динамический файл в WordPress: практическое руководство
23.09.2026
Как запретить WordPress REST API для гостей и не сломать админку
22.08.2026
Как добавить пользовательское поле в Gravity Forms через функции WordPress
26.09.2026
Как удалить все комментарии из WordPress через код: быстро и без плагинов
21.09.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше