Коротко: Редиректы в .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-метками |
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 и финальную страницу.
- Проверьте код ответа через curl — команда
curl -I https://example.ru/old-pageпокажет статус и заголовок Location. Должен быть 301, а не 200 или 302. - Тестируйте целевую страницу отдельно — редирект может вести на существующий URL, но с ошибкой 404 внутри. Проверяйте финал по цепочке.
- Смотрите заголовок Location в DevTools — во вкладке Network отключите кэш и посмотрите статус запроса. Chrome покажет редирект отдельной строкой.
- Применяйте 301-карту на короткое время в тестовом окружении — если возможно, сначала обкатайте конфиг на копии сайта, потом деплойте в прод.
- Логируйте 404 после переезда — Яндекс Вебмастер и Screaming Frog покажут страницы, которые не поймали редирект. Их нужно закрыть отдельными правилами.
Стандартный htaccess 301 редирект проверяется за минуту на каждом URL серии: пять адресов из разных разделов сайта покрывают большую часть ошибок. Если правило ломает сайт, файл откатывается через FTP — держите бэкап перед правкой. При ошибке 500 из-за синтаксиса Apache блокирует весь сайт, а не только страницу, поэтому тестирование в проде травматично.
Читайте также
- Удобная карта сайта онлайн помогает поисковым ботам
- Как безопасно купить обратные ссылки для роста позиций
- Как работает ваш продвинутый курс seo при подготовке новых кадров
Коротко о главном
Редиректы в .htaccess — инструмент на две-три строки, который решает задачи уровня «переезд домена», но при этом чувствителен к каждой запятой. Правила, коды ответов и порядок директив подчиняются строгим форматам, а ошибка в них роняет сайт целиком. Для постоянных переездов используйте 301, для временных подмен — 302, сохраняйте структуру URL через $1 в RewriteRule и всегда держите бэкап файла перед правкой.