301-редирект сообщает браузеру и поисковой системе, что ресурс постоянно переехал на другой URL. В Apache его часто задают в .htaccess; но прежде чем копировать правило, нужно понять, что именно перенаправлять, какую задачу решает новый адрес и где фактически работает сайт — Apache, Nginx, CDN или комбинация серверов.
Самая дорогая ошибка — не опечатка в регулярном выражении, а неверная карта перенаправлений: например, отправить весь удалённый каталог на главную. Формально сервер отвечает 301, но пользователь не получает нужную информацию. Поисковики могут трактовать такие переходы как soft 404.
Как выбрать правильный HTTP-ответ
| Ситуация | Обычно подходит | Пример |
|---|---|---|
| Страница навсегда сменила адрес | 301 или 308 | /old-service/ → /services/new-service/ |
| Временный переход, исходный URL вернётся | 302 или 307 | Временная сервисная страница |
| Документ удалён без замены | 404 или 410 | Карточка снятого товара без преемника |
| Две одинаковые версии URL | 301 на выбранную версию | HTTP → HTTPS, www → без www |
| Страницы похожи, но с разными интентами | Обычно отдельные 200 + собственные canonical | Товар и категория |
Не превращайте любой 404 в 301. Страница ошибки с полезным меню и поиском по сайту должна всё равно возвращать HTTP 404.
Перед правкой: бэкап и проверка сервера
.htaccess обрабатывает Apache при разрешённом использовании конфигурации на уровне каталогов. Если сайт обслуживает Nginx, этот файл может вообще не участвовать в формировании ответа. В MODX, WordPress и других CMS есть собственные правила маршрутизации: они способны перехватывать URL до или после вашего правила. Сделайте резервную копию и проверьте порядок директив.
Правила ниже — примеры для адаптации, а не готовый файл для любого хостинга. Сначала протестируйте на копии сайта и только затем переносите на продакшен.
Рецепт 1: один старый адрес на новый
Для простого сопоставления путей под Apache доступна директива Redirect:
Redirect 301 /old-page/ /new-page/
Убедитесь, что новая страница существует, соответствует прежнему интенту и возвращает 200. Если нужен сложный контроль query-параметров или хоста, удобнее использовать mod_rewrite. Не дублируйте одно и то же перенаправление одновременно в CMS, CDN и .htaccess.
Рецепт 2: HTTP → HTTPS и выбор зеркала
В простом случае, когда HTTPS настроен и принято решение использовать адрес без www, можно применять канонизацию на сервере. Однако за обратным прокси переменная HTTPS может не отражать внешнее соединение. Это пример, который обязательно проверяют в своей инфраструктуре:
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.ru$ [NC]
RewriteRule ^ https://example.ru%{REQUEST_URI} [R=301,L,NE]
Сначала убедитесь, что конфигурация proxy/CDN корректно передаёт схему и не вызовет цикл. Для некоторых серверов условие надо строить на доверенном X-Forwarded-Proto или вынести перенаправление на фронтовой прокси. Не доверяйте произвольным X-Forwarded-заголовкам, если входящий прокси не контролируется вами.
Рецепт 3: изменить путь в разделе
RewriteEngine On
RewriteRule ^blog/old-article/?$ /blog/new-article/ [R=301,L]
Внутри .htaccess путь в RewriteRule обычно записывается без ведущего /. Если правило в подкаталоге, относительная точка входа может отличаться. Не составляйте выражение без ограничителей, если оно может захватить множество похожих адресов.
Что делать с параметрами URL
При смене URL следите за query string. Apache может перенести старые параметры дальше по цепочке, хотя новый URL в них не нуждается. Например, ?utm_source=old не должен превращаться в часть основной новой структуры; но важный фильтр товара может быть значимым. Отдельно составьте таблицу параметров, которые необходимо сохранить, отбросить или перенести.
При сложной миграции удобнее создать карту конкретных URL из CSV и проверить каждый маршрут автоматически, чем строить одну непрозрачную регулярку на весь сайт. Если URL зависят от регистра и локали, учитывайте реальные правила серверной файловой системы и приложения.
Почему перенаправление всех 404 на главную вредно
Предположим, старой карточки example.ru/product/model-a/ больше нет. Пользователь кликает на сохранённую ссылку, а вместо ожидаемой модели видит главную. Наличие статуса 301 не делает главную релевантной заменой. Поисковик может распознать ситуацию как soft 404, а люди будут возвращаться назад или покидать сайт.
Лучше предоставить корректную страницу 404 с поиском, категориями и ссылками на альтернативы. Постоянный редирект нужен тогда, когда есть реально соответствующая замена. Это особенно важно при удалении сотен категорий и товаров.
Порядок правил и конфликты CMS
Запишите внешнюю канонизацию хоста/HTTPS до правил внутреннего роутинга. Конкретные перенаправления старых URL должны сработать до универсального правила, отправляющего запрос в index.php. Смешение Redirect и RewriteRule, дублирование в плагинах и настройках CDN — частая причина циклов или цепочек из нескольких 301.
Пример последовательности проверки:
| Вход | Ожидаемый результат | Что будет ошибкой |
|---|---|---|
http://www.example.ru/old-page/ |
Один или два контролируемых перехода → новая HTTPS-страница 200 | Зацикливание зеркал |
https://example.ru/old-page/ |
301 → /new-page/ → 200 |
301 → 404 |
https://example.ru/not-found-123/ |
404 | 301 → главная |
https://example.ru/new-page/ |
200 | Цикл на самого себя |
https://example.ru/category/?sort=price |
Выбранное поведение фильтра | Потеря нужных параметров |
Тестирование через curl и обход сайта
curl -I https://example.ru/old-page/
curl -IL --max-redirs 10 https://example.ru/old-page/
curl -I https://example.ru/not-found-123/
-I делает HEAD-запрос: некоторые приложения обрабатывают HEAD и GET по-разному, поэтому при странном результате повторите тест обычным GET и проверьте заголовки/тело. Для больших миграций автоматизируйте список пар «старый → целевой», сравнивайте фактический конечный URL и HTTP. После установки новых правил обновите внутренние ссылки и sitemap, чтобы обход не тратился на лишние переходы.
Если после публикации появились 500, циклы или пропали рабочие страницы, немедленно откатите изменение из сохранённой копии. В журнале изменений фиксируйте, какие правила добавили, когда и почему.
Частые вопросы
301 гарантированно сохранит позиции? Нет. Он передаёт сигнал о постоянном переезде, но результат зависит от релевантности конечной страницы, доступности сайта и переобхода. Нельзя обещать полное сохранение трафика.
Что лучше для дубля — canonical или редирект? Если старую версию можно убрать из пользования, часто предпочтительнее редирект. Если обе версии нужны пользователям, разберитесь, действительно ли они дубли, и применяйте canonical по назначению.
Можно ли настраивать всё через плагин CMS? Да, если он управляет ответом на нужном уровне и не конфликтует с веб-сервером. Результат проверяют HTTP-запросами, а не только интерфейсом плагина.
Связанные материалы: canonical для товара, HTML base, внутренняя оптимизация.
Источники: Google — ошибки обхода и удалённые страницы; Google — выбор canonical; документация Apache mod_rewrite.
Массовая миграция URL: как готовить таблицу соответствий
При редизайне или смене CMS у проекта может быть несколько тысяч старых адресов. Попытка заменить весь каталог одним правилом /old/(.*) → /new/$1 выглядит экономичной, но опасна: новая структура часто не повторяет старую, разделы могли объединиться, карточки исчезнуть, а часть слегов начать означать другие сущности.
Для каждого старого URL задайте действие: оставить 200, перенаправить на эквивалентную страницу, вернуть 404/410, или оставить содержательный архив. Добавьте столбцы: старый URL, новый URL, старый интент, новый интент, HTTP-код, внутренние входящие ссылки, наличие в sitemap и приоритет проверки. Наличие «похожего слова» в новом адресе не является достаточным доказательством соответствия.
При массовой миграции протестируйте минимум четыре выборки: самые посещаемые URL; коммерческие страницы; страницы с внешними ссылками; случайную выборку низкочастотных адресов. Тестировать только главную и пять популярных разделов недостаточно.
Проблемы с query string и редиректы на самого себя
В Apache условия обработки строки запроса и сохранения параметров зависят от конкретной директивы. Если при редиректе на новую карточку сохраняется старый ?id=123, итоговый URL может оказаться формально доступным, но с ненужным параметром. Иногда параметр критичен, например идентификатор конкретной вариации, а иногда представляет собой лишь сортировку или устаревшую метку кампании. Решение нужно принимать по назначению URL и бизнес-логике, а не «удалять все параметры ради SEO».
Редирект на самого себя часто появляется при неудачном сочетании условия по HTTPS и поведения прокси. Когда TLS завершается на внешнем балансировщике, Apache может видеть внутренний HTTP и пытаться перенаправлять запрос на тот же публичный HTTPS-адрес без конца. Поэтому правила канонизации лучше проверять вместе с инфраструктурой, а не на локальном тесте с другой схемой подключения.
Когда использовать 308 вместо 301
Оба статуса обозначают постоянное перенаправление. В отличие от 301, статус 308 сохраняет HTTP-метод и тело запроса; это важно для API и форм, где POST нельзя бездумно превращать в GET. Для обычных GET-адресов сайта 301 часто является привычным решением, но интеграции, платежи и формы требуют отдельного тестирования. Не перенаправляйте конечные точки POST по аналогии с информационными HTML-страницами без согласования с разработчиком.
Диагностика неожиданного 301
Если адрес неожиданно перенаправляется, выясните, на каком уровне это происходит: CDN, прокси, Nginx, Apache, PHP/CMS, плагин маршрутизации или браузерный кэш. Временно отключать всё подряд на рабочем сайте не нужно. Снимите цепочку заголовков, сравните запрос через внешний домен и безопасную внутреннюю точку доступа, посмотрите серверные конфигурации и журнал применения правил.
Чтобы избежать путаницы, фиксируйте не только статус, но и Location, конечный URL, число переходов, схему, хост и наличие параметров. Ошибка может выглядеть как «редирект работает» при фактически неправильной конечной странице.
Мини-протокол внедрения и отката
- Сохранить копию
.htaccessили актуального файла правил и дату изменения. - Применить изменения на тестовой среде со сравнимой конфигурацией прокси.
- Запустить таблицу автоматических проверок по старым и новым URL.
- Убедиться, что бизнес-критичные формы, кабинет, оплата, изображения и загрузки не затронуты.
- Внести на продакшен с возможностью быстрого отката.
- Проверить журналы 404/5xx и цепочки редиректов после публикации.
- Обновить внутреннюю навигацию, XML Sitemap и документацию миграции.
Сохранение одной копии конфигурации не является полноценным бэкапом, если изменения затрагивают CMS, CDN и БД. При значимой миграции нужен общий план восстановления, тесты и назначенные ответственные.
Архивные иллюстрации и первоначальные наблюдения
Ниже сохранены первоначальные иллюстрации к статье. Интерфейсы, инструменты и детали на скриншотах могли измениться: при выполнении работ руководствуйтесь актуальными инструкциями выше.
Показать архивные иллюстрации (2)


Ответы на частые вопросы (FAQ)
Что такое 301 редирект?
301 редирект - это постоянное перенаправление с одного URL на другой на стороне сервера. Используется при изменении адреса сайта или отдельных страниц.
Зачем нужен 301 редирект?
301 редирект нужен для сохранения позиций и трафика сайта при изменении адресов страниц. Также помогает избежать дублей контента и устранить ошибки типа 404.
Как сделать 301 редирект в WordPress?
В WordPress редиректы можно настраивать при помощи специальных плагинов, например Redirection, или править файл .htaccess.
Где найти и как открыть файл .htaccess?
Файл .htaccess находится в корневой папке сайта. Открыть его можно через FTP или панель управления хостингом.
Какие основные правила редиректов бывают?
Основные - редирект с http на https, с www на без www, со старого домена или страницы на новый адрес, редирект ошибки 404.
Как проверить работу редиректа?
Проверить можно вручную, через инструменты для анализа HTTP-кодов сервера (например сервис Яндекса), специальными программами-сканерами или в вебмастере.
Как отличается 301 редирект от 302?
301 редирект означает постоянное перенаправление, а 302 - временное. 301 полностью передает вес страницы на новый адрес, а 302 оставляет старую в индексе.
Что делать если после редиректа выдает ошибку 404?
Ошибка 404 после редиректа означает, что новый URL, на который идет перенаправление, некорректный. Проверьте правильность адреса и наличие самой страницы.
Можно ли настроить редирект без доступа к хостингу?
Если нет доступа на хостинг, то для редиректов можно воспользоваться панелью управления доменами или обратиться в техподдержку провайдера.
Есть ли еще вопросы по 301 редиректам? Оставляйте их в комментариях - постараюсь дать исчерпывающие ответы!
Следующие страницы вас также могут заинтересовать:
- Робототехника
- SEO-продвижение образовательного сайта: 7 лет — от старого HTML до AI Search
- Паллетирование: что это такое, технологии, оборудование и роботизация
- Промышленные роботы: что это, виды, устройство и применение
- Машинное зрение в робототехнике: что это, как работает и где применяется
Обновлено: 11.10.2026