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

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

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

Какой способ выбрать

Для WordPress без плагинов обычно используют три подхода:

  • .htaccess — если сайт работает на Apache или LiteSpeed и у вас есть доступ к файлу конфигурации в корне сайта;
  • конфигурация Nginx — если сайт обслуживается Nginx, а правила редиректа задаются на уровне сервера;
  • PHP-код в теме — только если нет доступа к настройкам сервера, но есть доступ к файлам темы или дочерней темы.

Самый надёжный вариант — редирект на уровне веб-сервера. Он срабатывает раньше WordPress, не зависит от темы и не нагружает PHP. Если есть возможность, используйте именно его.

Редирект 301 через .htaccess на Apache или LiteSpeed

Этот способ подходит, если сайт работает на Apache или LiteSpeed и в корне WordPress есть файл .htaccess. Перед изменениями сделайте копию файла: одна ошибка в правилах может привести к 500-й ошибке и временно положить сайт.

Файл обычно находится в корне установки WordPress, рядом с папками wp-content, wp-admin и wp-includes. Если его не видно, включите отображение скрытых файлов в файловом менеджере или по FTP.

Для редиректа одной страницы добавьте правило выше стандартного блока WordPress:

Redirect 301 /staryy-url/ https://example.com/novyy-url/

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

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

Redirect 301 /category/old-post/ https://example.com/blog/new-post/Redirect 301 /old-about/ https://example.com/o-kompanii/

Для более гибких сценариев используют модуль mod_rewrite. Он нужен, когда надо перенаправлять целые группы URL или учитывать шаблон адреса. Пример редиректа со старого раздела на новый:

RewriteEngine OnRewriteRule ^old-section/(.*)$ https://example.com/new-section/$1 [R=301,L]

Такой вариант сохраняет хвост URL после раздела. Например, /old-section/article-1/ уйдёт на /new-section/article-1/. Но используйте его только если новая структура действительно повторяет старую логику адресов.

После правок проверьте, что блок WordPress в .htaccess остался на месте. Обычно он выглядит так:

<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L]</IfModule>

Редиректы должны стоять выше этого блока, иначе WordPress может перехватывать запрос раньше, чем сработает правило.

Редирект 301 на Nginx

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

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

location = /staryy-url/ {    return 301 https://example.com/novyy-url/;}

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

location ^~ /old-section/ {    return 301 https://example.com/new-section/;}

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

Редирект через PHP, если доступа к серверу нет

Этот способ используют реже, потому что он медленнее и зависит от темы. Но иногда это единственный доступный вариант, например на ограниченном хостинге или при временной задаче.

Добавлять код лучше в дочернюю тему, а не в основную: при обновлении темы изменения не потеряются. Для одиночного редиректа можно использовать хук template_redirect в файле functions.php дочерней темы:

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

Если нужен редирект по ID страницы, можно проверять is_page(123). Это надёжнее, чем полагаться только на слаг, если URL может меняться.

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

Не используйте wp_redirect() в случайных местах шаблона. Функция должна вызываться до вывода HTML, иначе появятся предупреждения или редирект не сработает.

Что делать при смене структуры постоянных ссылок

Если вы меняете не одну страницу, а всю структуру URL, задача усложняется. Например, раньше записи были в формате /2024/05/post-name/, а теперь стали /blog/post-name/. В таком случае редирект лучше строить по шаблону, а не вручную для каждой записи.

Если старая и новая структура отличаются предсказуемо, можно перенаправить целый шаблон через mod_rewrite на Apache или через location в Nginx. Но сначала проверьте логику на нескольких реальных URL. Ошибка в шаблоне может отправить не туда весь раздел сайта.

Если структура меняется частично и старые URL не совпадают с новыми по шаблону, придётся составить карту перенаправлений вручную. Для этого обычно берут список старых адресов из аналитики, Search Console, карты сайта или экспортов из CMS и сопоставляют их с новыми страницами.

Как не потерять трафик при удалении страниц

Удалять страницу без редиректа — плохая идея, если на неё есть входящий трафик, ссылки или она уже ранжируется в поиске. В таких случаях у вас есть три рабочих сценария:

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

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

Для удалённых товаров, статей или посадочных страниц лучше заранее подготовить список перенаправлений. Тогда после публикации изменений старые ссылки не начнут массово отдавать 404.

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

После настройки не ограничивайтесь открытием ссылки в браузере. Браузер может кешировать ответ, а вы не увидите, какой код отдаёт сервер. Надёжнее проверить заголовки ответа.

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

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

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

Проверьте ещё два момента: новый URL должен открываться без редиректа обратно на старый, а в WordPress не должно быть конфликта с каноническими адресами, если вы вручную задали адрес, который уже обрабатывается системой.

Типичные ошибки, из-за которых редирект не срабатывает

На практике проблемы чаще всего связаны не с WordPress, а с деталями реализации:

  • редирект добавили ниже стандартного блока WordPress в .htaccess;
  • правило написали для Apache, а сайт работает на Nginx;
  • в URL забыли слеш в конце, хотя на сайте он используется;
  • настроили 302 вместо 301;
  • сделали цепочку из нескольких редиректов вместо одного прямого;
  • отправили все удалённые страницы на главную без логики замены;
  • внесли правки в родительскую тему, а потом обновили её и потеряли код.

Если редирект нужен надолго, не держите его в шаблоне темы без необходимости. Для постоянных правил серверный уровень надёжнее и проще в сопровождении.

Когда нужно быстро и аккуратно перенести страницы, редирект 301 без плагинов — нормальное решение. Для единичных адресов достаточно правила в .htaccess или конфиге Nginx. Если доступа к серверу нет, можно временно использовать PHP, но это запасной вариант, а не основной. Главное — заранее сопоставить старые и новые URL, не плодить цепочки и обязательно проверить код ответа после изменений.

Как настроить редиректы 301 в WordPress без плагинов
14.10.2026
Как закрыть от индексации страницы тегов в WordPress
17.10.2026
Как найти и удалить дубли записей и страниц в WordPress
11.10.2026
Как настроить robots.txt в WordPress для закрытия служебных страниц
01.10.2026