Если после смены структуры ссылок или удаления страниц старые адреса начинают отдавать 404, их нужно перенаправить на новые. Для этого обычно используют 301 редирект — постоянное перенаправление, которое сообщает браузеру и поисковым системам, что страница переехала окончательно. Но на практике одна неверная настройка легко превращает редирект в цепочку из нескольких переходов или в петлю, когда браузер ходит по кругу и страница не открывается вовсе.
Ниже — рабочий способ настроить 301 редиректы в WordPress так, чтобы они были понятными, безопасными и не создавали лишних переходов.
Когда 301 редирект действительно нужен
301 ставят в тех случаях, когда старый URL больше не должен открываться напрямую, а его содержимое перенесено на новый адрес. Типичные сценарии:
- изменили структуру постоянных ссылок в WordPress;
- переименовали запись, страницу или рубрику, и у неё изменился адрес;
- объединили несколько страниц в одну;
- удалили устаревший материал и хотите отправить пользователя на ближайшую релевантную страницу;
- перенесли сайт на новый домен.
Если страница просто временно недоступна, 301 не всегда подходит. Для временных переездов используют 302 или 307, но это уже другая задача. Для постоянной замены адреса 301 — правильный выбор.
Сначала проверьте, куда именно должен вести старый адрес
Ошибки с редиректами чаще всего начинаются не в WordPress, а на этапе выбора целевого URL. Перед настройкой полезно ответить на три вопроса:
- какая страница заменяет старую;
- есть ли у новой страницы уже свой канонический адрес;
- не ведёт ли новый адрес обратно на старый или на промежуточную страницу.
Если вы перенаправляете удалённую запись на главную только потому, что «так проще», это не всегда хорошее решение. Лучше отправлять пользователя на максимально близкую по смыслу страницу. Иначе редирект формально будет работать, но пользы для посетителя и поисковой системы будет мало.
Самый безопасный способ в WordPress — через плагин редиректов
Для большинства сайтов удобнее всего настраивать 301 через плагин. Это проще, чем править конфигурацию сервера вручную, и безопаснее для владельца сайта, который не хочет лезть в .htaccess или конфиг Nginx без опыта.
Подходящий плагин должен уметь создавать отдельные правила для каждого старого адреса, задавать код ответа 301 и показывать, если правило уже конфликтует с другим. Важно, чтобы у вас был доступ к редактированию правил и возможность быстро отключить их, если что-то пошло не так.
Общий порядок действий обычно такой:
- Установите и активируйте плагин редиректов.
- Откройте раздел управления перенаправлениями.
- Добавьте старый путь URL и новый целевой адрес.
- Выберите код ответа
301 Moved Permanently. - Сохраните правило и проверьте переход в браузере.
При этом важно указывать именно путь, если плагин работает с относительными адресами, или полный URL, если так требует интерфейс. Не смешивайте оба варианта в одном наборе правил без необходимости — это частая причина путаницы.
Как не создать цепочку редиректов
Цепочка редиректов возникает, когда запрос проходит через несколько адресов подряд: старый URL ведёт на промежуточный, промежуточный — на новый, а иногда ещё дальше. Например: /old-page → /new-page → /final-page. Формально сайт открывается, но каждый лишний шаг замедляет загрузку и усложняет обход страниц поисковыми роботами.
Чтобы этого не было, правило должно вести сразу на конечный адрес. Если у вас уже есть старые правила, проверьте их перед добавлением новых. Частая ошибка — оставить старое перенаправление после очередного переезда и поверх него добавить ещё одно.
Практически это выглядит так: если страница уже переехала на новый адрес, обновите существующее правило, а не создавайте второе. Не стройте «лесенку» из редиректов, когда каждый следующий просто повторяет предыдущий.
Как не попасть в редирект-петлю
Петля редиректов — это ситуация, когда адрес в итоге начинает перенаправлять сам на себя, прямо или косвенно. Браузер получает ответ, идёт по новому адресу, а там снова редирект, и так по кругу. Обычно это заканчивается ошибкой вида «слишком много перенаправлений».
Петли появляются в нескольких типичных случаях:
- старый и новый URL перепутаны местами;
- редирект настроен на адрес, который сам уже перенаправляет обратно;
- есть конфликт между плагином редиректов и правилами сервера;
- включены одновременно несколько плагинов, которые управляют перенаправлениями.
Если редирект не работает, сначала проверьте, не ведёт ли целевой URL обратно на исходный. Затем отключите дублирующие правила в других плагинах. На WordPress-сайте одна и та же логика перенаправления должна быть в одном месте, иначе отладка быстро становится бессмысленной.
Если нужно настроить редирект вручную через сервер
Ручная настройка уместна, когда у вас есть доступ к конфигу веб-сервера и вы понимаете, где именно обрабатываются правила. Это может быть быстрее и надёжнее для большого числа перенаправлений, но ошибка в конфиге способна уронить сайт или сломать часть URL.
Для Apache обычно используют .htaccess. Для Nginx правила задают в конфигурации сайта. Ниже пример для Apache, который перенаправляет один адрес на другой:
Redirect 301 /old-page/ https://example.com/new-page/Если нужно сохранить структуру домена и менять только путь, такой вариант подходит. Но перед правкой .htaccess обязательно сделайте резервную копию файла. Одна лишняя строка может вызвать ошибку 500.
Для Nginx логика похожа, но синтаксис другой, и изменения обычно вносятся в конфигурационный файл сайта, после чего конфигурацию нужно проверить и перезагрузить сервер. Если вы не уверены, что именно редактируете, лучше не делать это вручную на рабочем сайте.
Как проверить, что редирект работает правильно
После сохранения правила не ограничивайтесь открытием страницы в браузере. Браузер может кэшировать поведение, и вы не увидите реальную картину. Надёжнее проверить ответ сервера.
Самый простой вариант — открыть старый адрес в режиме инкогнито и убедиться, что он сразу ведёт на нужную страницу. Ещё лучше посмотреть HTTP-ответ через инструменты разработчика или командой curl:
curl -I https://example.com/old-page/В ответе должен быть статус 301, а в заголовке Location — конечный URL. Если вы видите несколько последовательных ответов с перенаправлением, значит цепочка всё ещё есть. Если запрос возвращает 200 на старом адресе, редирект не сработал. Если возвращается 301, но на неправильный URL, правило нужно исправить.
Полезно также проверить, не создаёт ли новое правило конфликт с WordPress-постоянными ссылками. Иногда после смены структуры ссылок нужно просто обновить настройки постоянных ссылок в админке, чтобы WordPress пересохранил правила маршрутизации. Но это не заменяет редиректы для уже существующих старых URL.
Что делать после массовой смены структуры ссылок
Если вы меняете не один адрес, а целый раздел сайта, редиректы лучше планировать списком. Сначала соберите старые и новые URL, затем сопоставьте их один к одному. Это особенно важно, когда меняются рубрики, типы записей или слэши в конце адреса.
Для массовой работы удобнее вести таблицу соответствий: старый адрес, новый адрес, примечание. Так проще заметить дубли и понять, какие страницы уже закрыты, а какие ещё требуют отдельного правила. Если старый адрес больше не имеет прямой замены, выбирайте ближайшую релевантную страницу, а не случайную.
После внедрения проверьте несколько адресов вручную и просмотрите логи ошибок, если они доступны на хостинге. Это помогает быстро поймать забытые URL, которые всё ещё отдают 404 или уходят в цепочку.
Коротко о том, что не стоит делать
- Не ставьте редирект на страницу, которая уже редиректит дальше без необходимости.
- Не направляйте старый URL на сам себя.
- Не держите одинаковые правила в нескольких плагинах одновременно.
- Не редактируйте
.htaccessили конфиг Nginx без резервной копии. - Не отправляйте все удалённые страницы на главную, если есть более подходящая замена.
Если соблюдать эти правила, 301 редиректы в WordPress настраиваются без лишних сюрпризов. Сначала определите конечный адрес, затем добавьте одно прямое правило, после этого проверьте ответ сервера. Такой порядок почти всегда надёжнее, чем попытка «починить» всё сразу несколькими слоями перенаправлений.