Как настроить 301 редирект через .htaccess?

Автор статьи:
Как настроить 301 редирект через .htaccess?
Когда нужно прописать редирект на Apache-сервере, первое место для этого - файл .htaccess. Он лежит в корне сайта, читается сервером при каждом запросе и позволяет менять маршруты URL без перезапуска Apache и без доступа к основным конфигам. В этой инструкции - пошаговый разбор: как подготовить файл, разобраться в синтаксисе и прописать двенадцать самых распространённых сценариев перенаправления.
Дата публикации: 02.10.2020
Дата актуализации: 07.05.2026
| прочитали: 5737
(Рейтинг: 5, Голосов: 8)
Как настроить 301 редирект
301 редирект301 редирект

Что такое 301 редирект?

Код 301 - это статус HTTP-ответа с официальным названием Moved Permanently («перемещено навсегда»). Когда браузер или поисковый робот запрашивает страницу, сервер возвращает ответ 301 и в заголовке Location указывает новый адрес. Браузер тут же уходит на новый URL - пользователь видит уже конечную страницу и не замечает промежуточного шага.

КодНазваниеКогда применять
301Moved PermanentlyСтраница переехала навсегда
302Found (временный)Временная переадресация, позиции не передаются
307Temporary RedirectВременный, сохраняет метод HTTP-запроса
410GoneСтраница удалена без замены

Для SEO важно выбирать именно 301 редирект htaccess: он передаёт поисковый вес (link equity) со старого URL на новый. При 302 поисковики продолжают индексировать старую страницу и не переносят ссылочную массу.

Для поисковых роботов важно именно наличие кода 301 - без него робот не поймёт, что страница переехала, и продолжит возвращать в выдачу старый адрес. В отличие от тега rel="canonical", редирект физически переводит пользователя на новый URL, а не просто подсказывает поисковику предпочтительный вариант.

В каких случаях используется редирект через .htaccess?

.htaccess работает на серверах Apache и применяется в большинстве случаев при хостинге на Linux. Вот типичные ситуации, когда нужен именно этот способ:

  • Смена домена - перенос сайта с одного доменного имени на другое с сохранением позиций.
  • Переход с HTTP на HTTPS - после установки SSL-сертификата весь трафик нужно перенаправить на защищённую версию.
  • Склейка зеркал - например, www.site.ru и site.ru должны открываться как один адрес.
  • Изменение структуры URL - при редизайне или переезде на новую CMS URL-адреса страниц меняются.
  • Удаление дублей - страницы с /index.html, /index.php или двойным слешем перенаправляются на канонический URL.
  • Ограничение по IP - доступ к определённым разделам открывается только для нужных адресов.

Если сайт работает на Nginx, .htaccess не применяется - правила редиректа прописываются в конфигурационном файле сервера. На Apache файл .htaccess обрабатывается при каждом запросе к директории, где он лежит.

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

Подготовка файла .htaccess

Где находится .htaccess?

Искать файл нужно в той же папке, что содержит index.php или index.html. Типичные пути: public_html/ на cPanel-хостинге, www/ или httpdocs/ у других провайдеров. Поскольку имя файла начинается с точки, файловые менеджеры и FTP-клиенты по умолчанию его прячут - включите отображение скрытых объектов.

Нет файла - создайте. Часть CMS не генерирует .htaccess при установке, поэтому его отсутствие в папке в порядке вещей.

Как создать или отредактировать .htaccess?

Три рабочих варианта:

  • Файловый менеджер панели управления - войдите в cPanel, ISPmanager или Plesk, откройте файловый менеджер, перейдите в корень сайта. Если .htaccess существует - откройте его на редактирование. Если нет - создайте новый файл и назовите его строго .htaccess (точка в начале обязательна). Редактор встроен в браузер, сохранить можно там же.
  • FTP/SFTP - подключитесь через FileZilla. Включите отображение скрытых файлов через меню Server → Force showing hidden files, иначе .htaccess не появится в списке.
  • SSH - откройте файл прямо на сервере: nano /var/www/html/.htaccess.

Резервное копирование

Скопируйте файл до того, как начнёте что-то менять. Синтаксическая ошибка в .htaccess роняет весь сайт с кодом 500 - причём страдают все страницы, а не только та, которую вы правили. Чтобы подстраховаться, скачайте копию по FTP или переименуйте старый файл в .htaccess.bak прямо на сервере.

Удобная привычка - версионировать изменения: добавляйте комментарий с датой перед каждым блоком новых правил. Это упрощает откат:

Советы по безопасности

  • Запретите прямой доступ к файлу из браузера - добавьте в .htaccess правило:
  • Не храните в .htaccess пароли и секретные ключи.
  • Ограничьте права доступа к файлу: chmod 644 .htaccess.
  • После любых изменений проверяйте сайт - ошибка в одной строке блокирует весь веб-сервер.

Пример базовых настроек

Минимальный шаблон .htaccess для сайта на Apache:

Options -Indexes запрещает листинг директорий. ServerSignature Off скрывает версию сервера от посторонних.

Синтаксис и директивы в .htaccess

Apache поддерживает два независимых механизма перенаправления: встроенную директиву Redirect и модуль mod_rewrite. Первый работает из коробки, второй даёт гибкость через регулярные выражения и условия. Разберём каждый.

Redirect 301

Директива Redirect входит в стандартный модуль mod_alias и не требует дополнительной активации. Запись минимальна:

Три параметра по порядку:

  • 301 - код ответа, который браузер получит в заголовке HTTP;
  • /old-page.html - относительный путь, который Apache ищет во входящем запросе;
  • https://site.ru/new-page.html - новый абсолютный адрес, куда пойдёт браузер.

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

Mod_Rewrite

Модуль mod_rewrite - основной инструмент для гибкого перенаправления. Он позволяет работать с шаблонами, регулярными выражениями и условиями, которые недоступны простой директиве Redirect. Перед любыми правилами RewriteRule нужно включить движок:

На большинстве хостингов модуль активирован по умолчанию. Если правила не работают - проверьте командой apache2ctl -M | grep rewrite и при необходимости попросите поддержку его включить.

Если правила применяются к поддиректории, добавьте базовый путь:

RewriteRule

RewriteRule - строка, в которой Apache проверяет входящий URL по шаблону и при совпадении возвращает другой адрес. Структура записи:

RewriteRule шаблон замена [флаги]

  • Шаблон - регулярное выражение, с которым сравнивается путь запроса (без домена и строки параметров).
  • Замена - путь или полный URL, на который нужно отправить запрос.
  • флаги - дополнительные инструкции в квадратных скобках, определяют тип ответа и дальнейшую обработку.

Основные флаги:

ФлагЧто делает
R=301Возвращает HTTP-ответ 301 и перенаправляет браузер на новый адрес
LЗавершает обработку текущего набора правил (Last)
NCСопоставление без учёта строчных и прописных букв
QSAСохраняет исходные GET-параметры при переходе на новый URL
NEПередаёт спецсимволы (%, &, =) как есть, без URL-кодирования

Пример: перенаправить все запросы к /catalog/* на /shop/*:

RewriteCond

RewriteCond стоит перед RewriteRule и блокирует его выполнение, если условие не выполнено. Несколько строк RewriteCond подряд объединяются по «И» - правило сработает, только когда все условия верны.

RewriteCond тестируемая_строка условие [флаги]

Часто используемые переменные сервера:

  • %{HTTP_HOST} - хост из заголовка запроса (то, что пользователь набрал в адресной строке);
  • %{HTTPS} - принимает значение on при HTTPS-соединении, иначе пусто;
  • %{REQUEST_URI} - путь после домена, включая слеш;
  • %{SERVER_PORT} - порт, на котором принят запрос (80 для HTTP, 443 для HTTPS);
  • %{REMOTE_ADDR} - IP-адрес клиента.

Управляющие флаги RewriteCond:

  • [NC] - регистр букв в сравнении не учитывается;
  • [OR] - соединяет следующую строку RewriteCond логическим «или»; без этого флага все условия по умолчанию объединяются через «и».

Как сделать редирект через .htaccess?

Ниже собраны двенадцать готовых блоков кода с объяснениями. Каждый фрагмент вставляется в файл .htaccess - туда, где уже стоит строка RewriteEngine On, или сразу после неё, если движок включается впервые.

Комментарий эксперта Ingate
Антон Кривцов, технический SEO-специалист Ingate: «Перед добавлением правил рекомендую сначала протестировать их на тестовой копии сайта или в онлайн-отладчике htaccess - например, htaccess.madewithlove.com. Ошибочное правило, применённое на боевом сервере, может создать циклическую переадресацию и положить сайт за несколько секунд. Особенно осторожно работайте с .* в шаблоне RewriteRule - это выражение захватывает все URL подряд.»

— SEO-аналитик Ingate

301 редирект Битрикс

Сайты на 1С-Битрикс часто требуют особой настройки, потому что Битрикс генерирует собственный .htaccess при установке. Правила редиректа добавляйте до блока # BEGIN Bitrix:

Если Битрикс уже включает RewriteEngine, не дублируйте строку - это вызовет ошибку.

301 редирект с одного домена на другой

Перенести трафик с old-site.ru на new-site.ru, сохранив все пути:

Группа (www\.)? в RewriteCond делает «www.» необязательным, поэтому одно правило закрывает оба варианта старого домена. Обратная ссылка $1 переносит путь из старого URL дословно: посетитель /catalog/noutbuki/ попадёт на https://new-site.ru/catalog/noutbuki/.

301 редирект с одной страницы на другую

Простейший случай - переадресация одного конкретного URL:

Или через mod_rewrite, если нужны условия:

Знак ? после слеша делает завершающий слеш необязательным - переадресация сработает и для /old-page, и для /old-page/.

301 редирект с домена с WWW на домен без WWW

Зеркало www.site.ru направляется на основной домен site.ru:

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

301 редирект с домена без WWW на домен с WWW

Если предпочитаете адрес с www, перенаправьте site.ru → www.site.ru:

301 редирект для отдельного IP

Отправить пользователей с определённого IP на другую страницу - удобно при техническом обслуживании или при разграничении доступа:

Чтобы охватить целую подсеть, укоротите маску в условии: ^192\.168\.1\. совпадёт с любым адресом вида 192.168.1.x.

301 редирект с https:// на http://

Обратный сценарий - снять SSL и вернуть трафик на http (применяется редко, но встречается при смене хостинга):

301 редирект с http:// на https:// для Linux

После установки SSL-сертификата добавьте в .htaccess это правило, чтобы HTTP-трафик автоматически шёл на HTTPS:

Оператор !=on в условии означает «HTTPS не активен». Флаг [L] завершает обработку после срабатывания правила - без него Apache проверил бы все последующие строки файла, что могло бы создать цикл.

301 редирект с главной страницы, кроме остальных страниц сайта

Перенаправить только корень сайта (/) на другой URL, не трогая остальные страницы:

Шаблон ^$ соответствует только пустому пути - то есть только главной странице.

301 редирект со всех страниц сайта, кроме главной

Перенаправить весь сайт на новый домен, но оставить главную страницу:

Условие !^/$ исключает главную страницу из переадресации.

301 редирект с GET-параметрами

Иногда URL формируется через строку параметров: /page?id=5. Переписать его в чистый путь /page/5/ можно так:

Знак вопроса в конце замены указывает Apache очистить строку параметров после перехода. Обратите внимание на %1 - это ссылка на первую захваченную группу из RewriteCond, тогда как $1 ссылается на группу из RewriteRule.

301 редирект с массовой склейкой

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

Файл redirect_list.txt - это лист соответствий в формате:

Такой подход применяется при масштабном редизайне или переезде на новую CMS, когда список насчитывает десятки и сотни строк.

«При массовых редиректах важно после запуска проверить корректность каждого правила через краулер - Screaming Frog SEO Spider или аналог. Инструмент пройдёт по всем URL из старого sitemap и покажет, куда ведёт каждый редирект. Это помогает поймать опечатки и случайные циклы до того, как их увидят поисковые роботы. В нашей практике именно пропущенный символ в RewriteCond становился причиной того, что часть страниц не попадала в индекс месяцами.»

— SEO-аналитик Ingate

Основные ошибки при настройке 301 редиректа через .htaccess

  • Redirect Loop. Браузер раз за разом прыгает между двумя адресами и после нескольких десятков итераций показывает «ERR_TOO_MANY_REDIRECTS». Корень проблемы - правило без ограничивающего условия: оно срабатывает даже для уже перенаправленного запроса. При переходе http→https спасает явная проверка RewriteCond %{HTTPS} !=on перед правилом.
  • Неэкранированная точка в домене. В регулярных выражениях . - это «любой символ», а не буквальная точка. Если написать site.ru вместо site\.ru, правило случайно захватит siteXru или site2ru. Проверяйте регулярные выражения в отладчике (regex101.com) до публикации на рабочем сервере.
  • Двойной RewriteEngine On. Если эта строка встречается в файле дважды - Apache вернёт ошибку 500. При работе с Битрикс проверяйте: его установочный .htaccess уже включает модуль, добавлять строку повторно не нужно.
  • Общее правило перехватывает конкретное. Apache обходит строки сверху вниз и останавливается на первом совпадении (флаг [L]). Если поставить широкий шаблон (.*) выше специфичного, он "съест" весь трафик раньше, чем дело дойдёт до нужного правила. Конкретные случаи всегда должны стоять выше общих.
  • Цепочки редиректов. Страница A → B → C - каждое звено увеличивает время ответа и, по мнению ряда SEO-специалистов, незначительно снижает передачу веса. Оптимальный вариант: A → конечный URL напрямую. Проверить цепочки удобно в Screaming Frog: он показывает полный путь каждого редиректа.
  • Отсутствие резервной копии. Ошибка в .htaccess положит весь сайт, а не только отдельную страницу. Всегда сохраняйте рабочую копию перед редактированием.
  • Не учтены редиректами GET-параметры. Правило ^page/?$ не захватит page?ref=abc. Если нужно перенаправлять и такие URL - добавьте соответствующий RewriteCond с %{QUERY_STRING}.
  • Ошибка 403 вместо редиректа. Иногда хостинг запрещает использование RewriteMap или некоторых директив в .htaccess через директиву AllowOverride. Если правило не работает - уточните у хостинга, какие директивы разрешены.

Что даёт 301 редирект для SEO?

Правильная настройка перенаправления влияет на три ключевых показателя:

  • Передача ссылочного веса. В 2016 году Google подтвердил: 301-редирект передаёт PageRank без каких-либо значимых потерь. На практике это означает, что все ссылки с других сайтов, которые указывали на старый адрес, после переезда работают в полную силу для нового.
  • Устранение дублей. Яндекс и Google воспринимают site.ru/page/ и www.site.ru/page/ как два разных документа. Если зеркала не объединены редиректом, ссылочный вес дробится между ними - ни один адрес не набирает полной силы.
  • Минимальная просадка при переезде. Смена домена или URL-структуры без редиректов - почти гарантированная потеря трафика на месяцы. С правильно выстроенными перенаправлениями поисковые роботы обновляют индекс за несколько недель, и позиции в выдаче за это время существенно не проседают.
  • Корректный краулинговый бюджет. Без перенаправления роботы тратят ресурсы на обход мёртвых страниц. После настройки редиректов краулер сразу уходит на актуальный URL.

Практическая рекомендация: после настройки всех редиректов добавьте старые URL в Google Search Console через инструмент «Проверка URL» и запросите повторный обход. Это ускорит обновление индекса с нескольких недель до нескольких дней. В Яндекс Вебмастере аналогичную роль выполняет инструмент «Переезд сайта» - он позволяет явно указать новый домен, что дополнительно ускоряет переиндексацию при смене домена.

SEO-оптимизация со специалистами Ingate

Настройка редиректа через htaccess - один из технических пунктов большого SEO-аудита. Самостоятельно разобраться с кодом реально, но при масштабных изменениях - переезде домена, редизайне, смене CMS - ошибки стоят дорого: просадка трафика на месяцы и потеря позиций в поисковой выдаче.

Специалисты Ingate проводят полный технический аудит, выявляют битые редиректы и цепочки перенаправлений, настраивают правила .htaccess и контролируют индексацию после изменений. Обратитесь за консультацией - поможем сохранить трафик при любых структурных изменениях сайта.

Вопрос-ответ

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

Несколько способов:

  1. Браузер - откройте DevTools (F12), вкладка Network. Перейдите по старому URL и проверьте код ответа: должен быть 301, а следующий запрос - 200.
  2. Online-сервисы - httpstatus.io, redirect-checker.org - введите URL и получите цепочку переадресаций с кодами.
  3. Curl в командной строке: curl -I https://site.ru/old-page/. В ответе ищите HTTP/1.1 301 и заголовок Location:.
  4. Screaming Frog - массовая проверка всех URL сайта, строит карту редиректов.

После любых изменений в .htaccess добавьте URL в Google Search Console для повторного обхода - это ускорит обновление индекса.

Код 301 кэшируется браузером, поэтому при тестировании открывайте страницу в режиме инкогнито или очищайте кэш - иначе изменения не будут заметны сразу.

Как настроить редирект для нескольких страниц одновременно?

Три подхода:

  • Несколько правил Redirect - просто перечислите строки одна за другой. Директива Redirect обрабатывает каждое правило независимо. Этот способ удобен при небольшом количестве переадресаций - до 20–30 правил.
  • RewriteMap - для сотен URL создайте текстовый файл-карту и подключите его через директиву RewriteMap (пример в разделе «301 редирект с массовой склейкой»). Обратите внимание: RewriteMap работает только в основном конфиге Apache, а не в .htaccess - если хостинг не даёт доступа к основному конфигу, попросите поддержку добавить директиву.
  • Шаблон RewriteRule - если у старых и новых URL одинаковая структура, один шаблон заменит десятки правил. Например, ^products/(.*)$ → /catalog/$1. Это самый производительный вариант, потому что Apache проверяет одно правило вместо сотни.

Какие ещё коды перенаправлений можно использовать в .htaccess?

Помимо 301, в .htaccess доступны:

  • 302 Found - временная переадресация. Используйте при A/B-тестировании или техническом обслуживании. Поисковики не переносят вес.
  • 307 Temporary Redirect - аналог 302, но строго сохраняет метод HTTP-запроса (POST остаётся POST).
  • 308 Permanent Redirect - как 301, но сохраняет метод запроса. Поддерживается не всеми серверами.
  • 410 Gone - страница удалена навсегда, заменяющего адреса нет. Помогает быстрее исключить мёртвые страницы из индекса.

Выбор кода зависит от цели. Для переезда домена или постоянного изменения URL - всегда 301. Для временных акций, A/B-тестирования или технических работ - 302 или 307. Код 410 полезен для удалённых страниц, которых больше не будет: он сигнализирует поисковику, что страницу можно сразу исключить из индекса, не ожидая повторных проверок.

В htaccess редирект с кодом 302 выглядит так:

Замените 302 на нужный код. Для 301 можно писать Redirect permanent - это синоним.


Источники:

Популярно по теме:

Свежие статьи:

Хотите стать клиентом?

Предложения INGATE GROUP

SEO-продвижение: 4-й месяц бесплатно

Бесплатный SEO-аудит для новых клиентов

SMM-обслуживание. Скидка 15% на абонемент в первые 2 месяца

ORM-обслуживание. Скидка 10% на абонемент в первые 2 месяца

Таргетированная и контекстная реклама. Скидка 30% за первые 3 месяца абонемента

* Предложение не является офертой и недействительно для рекламных агентств. Действует для клиентов, заключивших договоры с 21.03.2025 года. Предложения не суммируются.

Это рекламный блок.