Как настроить редиректы 301 в WordPress

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

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

Когда нужен именно 301-редирект

Код 301 используют, когда адрес изменился надолго или навсегда. Это типичный сценарий для:

  • смены URL у записи или страницы;
  • удаления старого материала с заменой на новый;
  • переезда сайта на другой домен;
  • склейки дублей, например с www и без www, с HTTP на HTTPS;
  • исправления неправильной структуры постоянных ссылок.

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

Самый простой способ: плагин для редиректов

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

Один из распространённых вариантов — Redirection. После установки и активации плагина откройте его раздел в админке и добавьте новое правило:

  1. в поле источника укажите старый URL;
  2. в поле назначения — новый адрес;
  3. выберите тип перенаправления 301 - Moved Permanently;
  4. сохраните правило и проверьте его работу.

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

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

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

Если сайт работает на Apache или LiteSpeed с поддержкой .htaccess, редиректы можно задать прямо в этом файле. Это хороший вариант для массовых и стабильных правил, потому что они отрабатывают до загрузки WordPress.

Перед изменением .htaccess обязательно сделайте резервную копию. Ошибка в синтаксисе может временно положить сайт или вызвать бесконечный редирект. Если не уверены, редактируйте файл через FTP/SFTP или файловый менеджер хостинга, а не через случайный плагин, который может переписать настройки.

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

Redirect 301 /staryj-url/ https://example.com/novyj-url/

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

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

Когда меняется весь домен, правила обычно выглядят так:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^staryj-domen\.ru$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.staryj-domen\.ru$ [NC]
RewriteRule ^(.*)$ https://novyj-domen.ru/$1 [R=301,L]

Этот вариант сохраняет путь и параметры запроса, если они передаются дальше. Но перед внедрением проверьте, не настроен ли у вас уже редирект на уровне панели хостинга или CMS. Дублирующиеся правила часто создают цепочки вида «старый URL → промежуточный URL → новый URL», а это лишняя задержка и риск ошибок.

Редирект через PHP, если нужен точечный контроль

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

Для перенаправления конкретной страницы можно использовать хук template_redirect. Пример:

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

Здесь is_page('staryj-url') проверяет нужную страницу, а wp_redirect() отправляет заголовок перенаправления. После вызова обязательно нужен exit;, иначе WordPress продолжит выполнение страницы.

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

Как не сломать сайт при настройке редиректов

Большинство проблем возникает не из-за самого 301, а из-за неправильной логики перенаправления. Перед сохранением правила проверьте три вещи.

  • Нет ли петли. Старый адрес не должен в итоге вести сам на себя через цепочку промежуточных URL.
  • Совпадает ли протокол и домен. Если сайт уже работает на HTTPS и без www, редиректы должны вести именно туда, а не в старую схему.
  • Не перекрывает ли правило другой редирект. Иногда глобальное правило для всего сайта мешает точечному редиректу одной страницы.

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

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

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

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

Если хотите увидеть код ответа точно, используйте команду curl:

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

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

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

Что делать, если старой страницы больше не существует

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

Если есть близкая по смыслу страница, редиректуйте на неё. Если подходящей замены нет, иногда лучше оставить 404 или 410 Gone, чем вести человека на нерелевантный URL. Это уже зависит от задачи сайта и структуры контента. Для интернет-магазина, каталога или новостного проекта решение может отличаться, но принцип один: редирект должен быть логичным и полезным для посетителя.

Хорошо настроенный 301-редирект решает сразу две задачи: сохраняет трафик со старых адресов и помогает поисковым системам понять, куда переехал контент. Если у вас несколько десятков адресов, начните с плагина. Если редиректов много и они стабильны, перенесите их на уровень сервера. А если нужен один-два точечных перехода, можно обойтись PHP-кодом, но только в дочерней теме или отдельном плагине.

Как удалить /category/ из URL рубрик в WordPress
13.10.2026
Как изменить URL записей в WordPress без потери трафика
16.10.2026
Автоматическое удаление спама в комментариях WordPress
03.10.2026
Как создать собственный виджет WordPress: подробное техническое руководство
03.10.2026
Как отключить архивы дат в WordPress
02.10.2026