WP-Team

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

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

Сразу оговорюсь: если редирект сделан неправильно, можно получить цепочки перенаправлений, петли или вообще сломать доступ к части сайта. Поэтому перед изменениями стоит понять, где именно будет работать правило — на уровне Apache/Nginx или внутри WordPress.

Когда редирект 301 нужен именно без плагина

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

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

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

Что выбрать: код WordPress или правила сервера

Для редиректа 301 есть два практичных пути. Оба рабочие, но подходят для разных ситуаций.

СпособКогда подходитПлюсыМинусы
Правила Apache/NginxЕсть доступ к конфигу сайта или к файлу .htaccessСрабатывает до загрузки WordPress, быстрее и надежнееНужно понимать синтаксис сервера; ошибка может повлиять на весь сайт
Код в WordPressНет доступа к серверным настройкам, нужен точечный редиректМожно сделать без правки веб-сервераРедирект выполняется после старта WordPress, лишняя нагрузка выше

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

Как сделать редирект 301 через WordPress-код

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

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

Пример редиректа со старого адреса на новый:

add_action('template_redirect', function () {
    if (is_page('old-page')) {
        wp_redirect(home_url('/new-page/'), 301);
        exit;
    }
});

Что здесь происходит:

  • template_redirect срабатывает до вывода шаблона, когда WordPress уже понял, какая страница запрошена;
  • is_page('old-page') проверяет конкретную страницу по слагу, ID или заголовку;
  • wp_redirect(..., 301) отправляет постоянное перенаправление;
  • exit нужен, чтобы после отправки заголовков выполнение сразу остановилось.

Если нужно перенаправить не страницу, а произвольный путь, удобнее проверять $_SERVER['REQUEST_URI']. Но здесь важно аккуратно сравнивать адрес и учитывать слеши, параметры и регистр. Для типовой задачи со старой страницей лучше использовать условные теги WordPress, а не сырую строку запроса.

Пример для точного совпадения пути:

add_action('template_redirect', function () {
    $request_uri = $_SERVER['REQUEST_URI'] ?? '';

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

Такой код сработает только для указанного пути. Если на старом адресе были параметры вроде ?utm_source=..., они в этом сравнении не учитываются. Для сохранения параметров нужен отдельный разбор URL.

Как настроить редирект 301 через сервер

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

Apache: правило в .htaccess

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

Простой редирект со старого URL на новый:

Redirect 301 /old-page/ https://example.com/new-page/

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

RewriteEngine On
RewriteRule ^old-page/?$ https://example.com/new-page/ [R=301,L]

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

Nginx: правило в конфигурации сайта

На Nginx редирект задают в блоке server. В .htaccess его писать бессмысленно — Nginx этот файл не читает.

location = /old-page/ {
    return 301 https://example.com/new-page/;
}

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

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

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

  • Не делайте цепочку из нескольких редиректов, например со старого URL на промежуточный, а потом на новый. Лучше сразу вести на конечный адрес.
  • Не ставьте 302 вместо 301, если перенос постоянный. Временный редирект поисковики могут трактовать иначе.
  • Не направляйте все старые страницы на главную без смысла. Для SEO это слабый вариант: лучше подбирать релевантную замену.
  • Проверьте, чтобы новый URL открывался без дополнительного редиректа на себя же или на другой адрес.

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

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

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

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

Пример проверки через curl:

curl -I https://example.com/old-page/

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

Когда лучше не делать редирект в коде темы

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

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

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

×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее