Если вы поменяли структуру ссылок, удалили страницу или перенесли сайт на новый домен, старые URL нужно перенаправить на новые через 301 редирект. Иначе пользователи и поисковые роботы будут попадать на 404, а часть накопленного трафика и ссылочного веса просто потеряется.
В WordPress это можно сделать несколькими способами: через плагин, через настройки сервера или с помощью небольшого кода. Выбор зависит от того, есть ли у вас доступ к файлам сайта, какой у вас хостинг и сколько редиректов нужно настроить.
Когда 301 редирект действительно нужен
301 используют, когда старый адрес больше не должен открываться как основной, а его место занял новый. Типичные случаи:
- сменили структуру постоянных ссылок;
- переименовали запись или страницу и изменился URL;
- объединили несколько материалов в один;
- перенесли сайт на новый домен;
- удалили страницу, но есть подходящая замена;
- исправили дубль адреса с www и без www, с http и https.
Если страницы нет и замены тоже нет, редирект на главную — плохая идея. Для пользователя это выглядит как подмена контента, а для поисковых систем такой редирект часто воспринимается как мягкая ошибка. В этом случае лучше оставить 404 или 410, если страница удалена окончательно.
Самый простой способ: плагин для редиректов
Если вам нужно быстро настроить несколько перенаправлений без правки конфигурации сервера, удобнее всего использовать плагин. Это особенно полезно на обычном хостинге, где доступ к .htaccess или конфигу Nginx ограничен.
Один из самых распространённых вариантов — Redirection. Он подходит для ручного добавления правил и умеет вести журнал 404, чтобы вы видели, какие старые адреса реально запрашивают посетители.
Как настроить редирект через плагин:
- Установите и активируйте плагин.
- Откройте раздел управления редиректами.
- Добавьте источник — старый URL.
- Укажите целевой адрес — новый URL.
- Выберите код ответа
301. - Сохраните правило и проверьте переход в браузере.
Если переносите много страниц, сначала соберите список старых и новых адресов в таблицу. Так проще не перепутать соответствия и не создать цепочки редиректов, когда один URL ведёт на другой, а тот — ещё дальше.
Плюс плагина в том, что вы можете быстро менять правила без доступа к серверу. Минус — лишний плагин на сайте. Если редиректов немного и они нужны надолго, лучше настроить их на уровне сервера.
Редирект через .htaccess: подходит для Apache и LiteSpeed
Если сайт работает на Apache или LiteSpeed и у вас есть доступ к файлу .htaccess, редирект можно прописать вручную. Это надёжный и быстрый способ, потому что правило отрабатывает до загрузки WordPress.
Перед изменением .htaccess обязательно сделайте резервную копию файла. Ошибка в синтаксисе может привести к недоступности сайта или к циклическому редиректу.
Пример редиректа одной страницы:
Redirect 301 /staryj-url/ https://example.com/novyj-url/Если нужно перенаправить весь сайт на новый домен, правило будет другим:
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]В этом примере сохраняется путь после домена. То есть /category/post/ на старом сайте откроется как /category/post/ на новом домене. Это удобно при полном переезде, если структура URL не менялась.
Если у вас WordPress с «красивыми ссылками», не вставляйте правила редиректа выше стандартного блока, который создаёт сам WordPress, без понимания порядка обработки. Неправильное размещение может сломать работу сайта. Обычно безопаснее добавлять свои правила выше блока # BEGIN WordPress, но после проверки, что они не конфликтуют с существующими настройками.
Если сервер на Nginx
На Nginx редиректы настраиваются в конфигурации виртуального хоста, а не в .htaccess. Это важно: если вы просто создадите или отредактируете .htaccess на Nginx, он не даст результата.
Пример редиректа одной страницы:
location = /staryj-url/ {
return 301 https://example.com/novyj-url/;
}Для переноса домена с сохранением пути:
server {
server_name staryj-domen.ru www.staryj-domen.ru;
return 301 https://novyj-domen.ru$request_uri;
}После правки конфигурации Nginx обычно требуется проверить синтаксис и применить изменения. Это уже задача уровня сервера, поэтому если у вас обычный shared-хостинг без доступа к конфигам, проще использовать плагин или обратиться в поддержку хостинга.
Редирект через functions.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 продолжит вывод страницы.
Этот вариант не лучший для массовых редиректов. Если у вас десятки или сотни правил, код в теме быстро станет неудобным в поддержке. Для таких задач лучше использовать плагин или серверную конфигурацию.
Как не испортить редиректы цепочками и петлями
Самая частая ошибка — сделать редирект не напрямую на конечный URL, а через промежуточный адрес. Например, старый адрес ведёт на промежуточную страницу, а та уже на новую. Для пользователя это почти незаметно, но для скорости и SEO это лишний шаг. Поисковым системам такие цепочки тоже не нравятся.
Ещё хуже — редирект-петля, когда старый URL в итоге возвращает сам себя или ходит по кругу между двумя адресами. В этом случае браузер покажет ошибку перенаправления, а страница не откроется.
Проверяйте три вещи:
- старый URL ведёт сразу на финальный адрес;
- финальный адрес открывается без дополнительного редиректа, если это не нужно;
- нет конфликта между правилами в плагине,
.htaccessи настройками хостинга.
Если вы уже настроили редирект, но страница всё равно открывается по старому адресу, проверьте кэш. На сайте может быть кэш плагина, серверный кэш или CDN. Иногда после правки правил нужно очистить все уровни кэширования, иначе вы тестируете старую версию ответа.
Как проверить, что 301 работает правильно
Самый простой тест — открыть старый URL в режиме инкогнито и посмотреть, куда он ведёт. Но браузер не всегда показывает код ответа, поэтому лучше проверить именно статус 301.
Можно использовать любой онлайн-проверяльщик редиректов или инструменты разработчика в браузере. Если нужен более точный способ, проверьте заголовки ответа через команду curl:
curl -I https://example.com/staryj-url/В ответе должен быть статус HTTP/1.1 301 Moved Permanently или его эквивалент в зависимости от сервера. Также посмотрите заголовок Location — в нём должен быть новый адрес.
Если вместо 301 вы видите 302, значит редирект временный. Для переноса URL это обычно не то, что нужно. Если видите 404, правило не сработало или указанный путь написан с ошибкой.
Что делать после удаления страницы
Когда страница удалена, у вас есть три рабочих сценария:
- есть точная замена — ставите 301 на новый материал;
- есть близкая по смыслу страница — можно перенаправить на неё, если она действительно помогает пользователю;
- замены нет — оставляете 404 или отдаёте 410, если удаление окончательное.
Не стоит перенаправлять всё подряд на главную. Для посетителя это выглядит как ошибка навигации, а для поисковика — как попытка скрыть удалённый контент. Если таких удалённых URL много, лучше сначала пройтись по журналу 404, понять, какие адреса реально запрашивают, и уже потом настроить точечные редиректы.
Если вы меняете структуру сайта, полезно составить карту соответствий: старый URL, новый URL, тип перенаправления, дата изменения. Это не обязательное требование WordPress, но на практике такая таблица сильно упрощает поддержку сайта после переезда или редизайна.
301 редирект в WordPress — это не сложная настройка, если заранее выбрать правильный способ. Для нескольких адресов подойдёт плагин, для массового переноса и стабильной работы лучше серверные правила, а код в теме имеет смысл только для единичных случаев. Главное — перенаправлять сразу на конечный URL, не плодить цепочки и после настройки обязательно проверить код ответа.