Коротко: Редиректы в .htaccess задаются одной-двумя строками, но синтаксис строгий — любая опечатка роняет сайт в 500-ю ошибку. Постоянный переезд оформляется кодом 301, временный — 302. Правила лучше добавлять по одному и сразу проверять код ответа через curl.

Перенаправление URL — базовый инструмент веб-разработчика и SEO-специалиста. Когда сайт переезжает, меняется структура или заканчивается SSL-сертификат, именно htaccess редирект снимает задачу без правки сотен страниц вручную. Ниже — где файл лежит, как выглядит синтаксис правил и чем 301 отличается от 302 на практике.

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

Файл .htaccess — это текстовый документ без расширения, который Apache читает при каждом запросе к директории. Лежит он в корне сайта, рядом с index.php, и действует рекурсивно: правила из корневого файла распространяются на все подпапки, если ниже не лежит свой .htaccess.

На хостингах с панелью управления файл скрыт по умолчанию — префикс с точкой в Unix означает «скрытый». В FileZilla нужно включить отображение скрытых файлов (Server → Force showing hidden files), в ISPmanager — нажать «Показать скрытые» в файловом менеджере. Через SSH поможет команда ls -la в корне.

Если сайт работает на Nginx, .htaccess не подействует: у Nginx другие конфиги и другой синтаксис. Проверить сервер можно в HTTP-заголовке Server через DevTools или сервис вроде WhatsMyServer. Это важно понимать перед тем, как править файл: на Nginx его часто оставляют для совместимости, но реальных правил в нём нет.

Синтаксис правил редиректа

Обычный редирект htaccess собирается из трёх частей: директива, шаблон для сопоставления и цель. Директив две группы — Redirect (модуль mod_alias) и RewriteRule (модуль mod_rewrite). Первая проще, вторая гибче. Для базовых сценариев хватает первой, для условных — вторая.

Директива Redirect

Самый компактный вариант — это Redirect. Синтаксис: Redirect 301 /old-page.html https://example.com/new-page. Работает без включения mod_rewrite, читается за секунду, легко откатывается. Ограничение — нельзя использовать регулярные выражения и условия (например, «только для определённого User-Agent»).

RewriteRule и флаги

Модуль mod_rewrite даёт полный контроль. Базовый блок:

RewriteEngine On
RewriteRule ^old-page\.html$ /new-page [R=301,L]

Порядок директив имеет значение. RewriteEngine включается один раз в начале файла. Затем идут условия RewriteCond и сами правила. Флаг [R=301] задаёт код ответа, [L] останавливает обработку следующих правил — без него легко получить цикл и ошибку 500.

ФлагЧто делаетКогда нужен
R=301Постоянный редиректПереезд сайта, смена URL
R=302Временный редиректA/B-тесты, техработы
LОстановить обработку правилПочти всегда, кроме редких сценариев
NCИгнорировать регистрURL вида /Page и /page
QSAСохранить GET-параметрыРедирект с UTM-метками
Вы пришли к нам по SEO
Мы сделаем так, что и ваши клиенты придут к вам. SEO от 30 000 рублей в месяц.
Напишите Анатолию →

301 и 302 редиректы

Код ответа — главный сигнал для поисковых систем. Он говорит роботу, что делать с накопленным весом страницы: переносить на новый URL или оставить у старого. Перепутать их — типичная ошибка при переездах, которая приводит к просадке позиций на несколько недель.

Постоянный 301 редирект htaccess

Постоянный 301 редирект htaccess сообщает поисковикам, что страница переехала навсегда. Яндекс и Google переносят накопленные ссылки и траст на новый URL за 2–6 недель, точный срок зависит от размера сайта и скорости обхода. Если нужно переехать без потери позиций — это единственный корректный вариант.

Временный 302

Временный 302 используется, когда URL вернётся. Например, во время A/B-теста, при блокировке страницы на техработы или при географической подмене контента. Поисковики оставляют старый URL в индексе и ждут. Затягивать с 302 на постоянных изменениях нельзя — вес не передаётся, и позиции постепенно проседают.

По данным Google Search Central (2026), 301-й редирект передаёт максимум накопленного сигнала новому URL, а 302-й сохраняет исходный адрес в индексе — выбор зависит от того, вернётся ли контент на прежний URL.

Перенаправление на другой домен

Переезд сайта на новое доменное имя — сценарий, где ошибка в конфиге стоит дороже всего. Все старые адреса должны отдавать 301 на соответствующие страницы нового домена, а не на главную. Массовый редирект «все на главную» убивает накопленный вес посадочных страниц.

Базовый htaccess редирект на другой домен

В базовом сценарии пишут три строки:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-domain\.ru$ [NC]
RewriteRule ^(.*)$ https://new-domain.ru/$1 [R=301,L]

Здесь $1 — это часть URL после домена. Именно она сохраняет структуру: /catalog/item.html на старом домене превратится в https://new-domain.ru/catalog/item.html. Если убрать переменную, все страницы сольются на главную.

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

Если переносится не только домен, но и меняется структура URL, одного правила мало. Пишут отдельный RewriteRule для каждой группы страниц. Например, старые /products/ едут в новые /catalog/, а раздел блога остаётся на месте. Пропущенная группа даст 404 — её лучше выявить заранее, проанализировав лог обращений.

Как правило, редирект с одного домена на другой htaccess реализует одной-двумя строками. Но если переносить не только домен, но и протокол с WWW на без-WWW — комбинаций становится больше. Удобнее писать правила по одному, проверять каждое и только потом объединять в один блок.

В нашей практике переезд интернет-магазина на новое доменное имя потребовал тринадцати правил RewriteRule: восемь для сохранения структуры каталога, три для блога и два для старых партнёрских ссылок. Пропуск любого из них давал всплеск 404 в Яндекс Вебмастере.

Проверка и отладка правил

После деплоя правил обязательно проверяйте каждый URL руками. Одна опечатка в регулярном выражении — и вместо 301 отдаётся 500 либо бесконечный цикл без явных сообщений. Смотреть нужно код ответа, заголовок Location и финальную страницу.

  1. Проверьте код ответа через curl — команда curl -I https://example.ru/old-page покажет статус и заголовок Location. Должен быть 301, а не 200 или 302.
  2. Тестируйте целевую страницу отдельно — редирект может вести на существующий URL, но с ошибкой 404 внутри. Проверяйте финал по цепочке.
  3. Смотрите заголовок Location в DevTools — во вкладке Network отключите кэш и посмотрите статус запроса. Chrome покажет редирект отдельной строкой.
  4. Применяйте 301-карту на короткое время в тестовом окружении — если возможно, сначала обкатайте конфиг на копии сайта, потом деплойте в прод.
  5. Логируйте 404 после переезда — Яндекс Вебмастер и Screaming Frog покажут страницы, которые не поймали редирект. Их нужно закрыть отдельными правилами.

Стандартный htaccess 301 редирект проверяется за минуту на каждом URL серии: пять адресов из разных разделов сайта покрывают большую часть ошибок. Если правило ломает сайт, файл откатывается через FTP — держите бэкап перед правкой. При ошибке 500 из-за синтаксиса Apache блокирует весь сайт, а не только страницу, поэтому тестирование в проде травматично.

Читайте также

Коротко о главном

Редиректы в .htaccess — инструмент на две-три строки, который решает задачи уровня «переезд домена», но при этом чувствителен к каждой запятой. Правила, коды ответов и порядок директив подчиняются строгим форматам, а ошибка в них роняет сайт целиком. Для постоянных переездов используйте 301, для временных подмен — 302, сохраняйте структуру URL через $1 в RewriteRule и всегда держите бэкап файла перед правкой.

Поделиться: ВК TG