301 редирект в .htaccess: как правильно прописать и настроить - VICTORY group

301 редирект в .htaccess: как правильно прописать и настроить

Время чтения: 5 мин.
Просмотров: 23
Дата публикации: 29.08.2026
Дата обновления: 25.08.2026
Навигация
301 редирект в .htaccess: как правильно прописать и настроить

Файл .htaccess — один из самых распространенных инструментов для настройки серверных редиректов на Apache. Через него прописывают правила перенаправления для отдельных страниц, целых разделов, доменов и дублей URL, не трогая основную конфигурацию сервера.

В этой статье разберем, как работает 301 редирект в .htaccess, когда достаточно простой директивы Redirect, когда нужен RewriteRule и как на практике выглядят типовые сценарии: перенаправление страницы, домена, www, index.php и главной.

Стоит учитывать, что Apache поддерживает и Redirect через модуль mod_alias, и правила mod_rewrite, и сам рекомендует для простых URL-манипуляций использовать возможности mod_alias, а не усложнять задачу mod_rewrite.

Что такое 301 редирект в .htaccess

301 редирект в .htaccess — это способ настроить постоянное перенаправление на уровне веб-сервера Apache. Он информирует браузеры и поисковые системы о том, что старая страница или адрес окончательно перемещены на новый URL. В отличие от временного редиректа, постоянный вариант передаёт SEO-вес страницы и сигнализирует поисковикам, что старый адрес больше не должен появляться в индексе.

Редирект 301 .htaccess настраивается через директивы, доступные прямо в файле .htaccess, — без доступа к основному конфигурационному файлу сервера. Это удобно в общем хостинге, где настройки httpd.conf закрыты.

В этом случае 301 может работать через модуль mod_alias (директивы Redirect, RedirectPermanent, RedirectMatch) или через mod_rewrite (RewriteRule в сочетании с флагами).

Важно понимать, что оба способа решают схожие задачи, но по-разному. Редирект 301 через mod_alias проще в написании и чтении, а mod_rewrite даёт больше возможностей для условий и маскирования — то есть для обработки целых групп адресов по шаблону, а не только одного конкретного URL.

Когда в .htaccess использовать Redirect, а когда RewriteRule

Для большинства простых задач — перенос одной страницы, перенаправление раздела, смена домена — достаточно Redirect permanent. Это более читаемая и надёжная запись 301 редиректа для очевидных сценариев. Документация Apache прямо указывает: mod_alias подходит для простых URL-манипуляций, и в таких случаях mod_alias предпочтительнее mod_rewrite.

RewriteRule нужен, когда требуется более сложная логика:

  • регулярные выражения, условия через RewriteCond;
  • маски для групп URL;
  • работа с параметрами.

Директивы 301 редиректа через mod_rewrite позволяют, например, перенаправлять все страницы подраздела по шаблону, добавлять или убирать www по условию протокола, обрабатывать URL с параметрами. Запросы «301 редирект RewriteRule» и «RewriteCond 301 редирект» как раз описывают этот сценарий.

Практическое правило:

  • Если задачу можно решить через Redirect — решать через Redirect.
  • RewriteEngine и RewriteRule стоит подключать тогда, когда без них не обойтись.

Apache рекомендует использовать флаг [R=301,L] при работе с mod_rewrite, а при необходимости постоянного перенаправления — указывать код явно, а не полагаться на дефолтное поведение.

Как прописать 301 редирект в .htaccess: типовые примеры

Ниже — основные сценарии настройки 301 редиректа через .htaccess.

Редирект с одной страницы на другую (через mod_alias):

Redirect 301 /old-page/ https://example.com/new-page/

Редирект с www на без www (через mod_rewrite):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

Редирект без www на www — симметричный вариант с ^example\.com.

Редирект с index.php или index.html на главную:

Redirect 301 /index.php https://example.com/
Redirect 301 /index.html https://example.com/

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

RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain\.com$ [NC]
RewriteRule ^(.*)$ https://newdomain.com/$1 [R=301,L]

Редирект со старого URL на новый через RedirectMatch (с маской):

RedirectMatch 301 ^/old-section/(.*)$ https://example.com/new-section/$1

Apache описывает Redirect permanent как постоянный 301, а RedirectMatch и RewriteRule — как инструменты для сопоставления по шаблонам и регулярным выражениям. Короткие примеры выше покрывают большинство практических задач без избыточного усложнения.

Какие ошибки чаще всего допускают при настройке 301 редиректа в .htaccess

Первая и самая распространенная ошибка — использование mod_rewrite там, где достаточно простого Redirect. Излишняя сложность правил без необходимости усложняет файл и часто становится причиной трудно диагностируемых конфликтов с 301 редиректами в .htaccess.

Отсутствие флага [L] в RewriteRule — вторая частая проблема. Без него Apache продолжает применять другие правила после срабатывания текущего, что приводит к непредсказуемому поведению. Apache явно предупреждает: R без L может давать некорректный результат.

Два 301 редиректа в цепочке (когда один ведет на другой, который снова редиректит) — тоже распространённая ошибка, удлиняющая путь и снижающая скорость.

Другие типовые проблемы:

  • 301 редирект со всех страниц на главную вместо конкретных URL — теряется вся структура сайта.
  • Неверная логика RewriteCond, из-за которой условие срабатывает не так, как ожидалось.
  • 301 редирект без учёта query-параметров (?id=, ?utm= и т.д.) возникает, когда правила не обрабатывают параметры URL, из-за чего редирект работает неправильно для адресов с ?query=.
  • 301 редирект маска — применение шаблона, захватывающего лишние URL.

Apache отдельно указывает, что mod_rewrite мощный, но сложный, и ошибки в нём бывает трудно обнаружить без проверки итогового поведения.

Нужна помощь с настройкой 301 редиректов в .htaccess?

Если вам важно не просто прописать редирект, а настроить корректную схему перенаправлений без циклов, дублей и потери логики сайта, VICTORY group поможет проверить текущие правила в .htaccess, найти ошибки и выстроить правильную систему редиректов под задачи проекта.

Что важно проверить после настройки 301 редиректа в .htaccess

После добавления правил в .htaccess важно убедиться, что редирект работает так, как задумано, а не просто не выдаёт ошибку. 

  1. Нужно проверить, какой HTTP-код реально возвращает сервер: это можно сделать через инструменты разработчика в браузере или онлайн-сервисы проверки заголовков.
  2. Убедиться, что перенаправление ведёт на правильный URL без лишних промежуточных шагов — цепочка 301→301 или 301→302 замедляет загрузку и снижает эффективность передачи поискового веса. 
  3. После добавления нового правила нужно проверить, не сломались ли соседние URL, которые раньше работали корректно.

Даже правильная запись в .htaccess требует проверки на практике, особенно если на сайте уже есть другие правила RewriteRule, RewriteCond или Redirect. 

Apache обрабатывает эти директивы в порядке их следования, и взаимодействие нескольких правил может давать результат, который отличается от ожидаемого.

Финальная проверка поведения — обязательный шаг после любых изменений в файле.

Приведем клиентов
Заполните форму, и мы свяжемся
с вами для консультации.
FAQ

Часто задаваемые
вопросы по агентству

Ответили на самые популярные вопросы, которые
помогают лучше понять наш подход, процессы и ценности
Чем Redirect permanent отличается от RewriteRule [R=301,L]?
Оба дают код 301, но работают через разные модули Apache. Redirect permanent использует mod_alias — это более простой и прямолинейный способ. RewriteRule [R=301,L] использует mod_rewrite и позволяет добавлять условия через RewriteCond, работать с регулярными выражениями и строить более сложную логику. Для простых задач предпочтительнее Redirect permanent.
Когда для 301 редиректа в .htaccess хватает одной строки?
Когда нужно перенаправить конкретный статичный URL на другой статичный URL без условий. Пример: Redirect 301 /old-page/ https://example.com/new-page/. Одна строка — один источник, один целевой адрес. Для маскирования по шаблону или для зависимости от протокола и хоста уже нужны дополнительные директивы.
Как сделать 301 редирект с одной страницы на другую через .htaccess?
Через директиву Redirect из mod_alias: apache Redirect 301 /staraya-stranitsa/ https://example.com/novaya-stranitsa/ Путь в первом параметре — относительный (от корня сайта), URL во втором — полный, с протоколом и доменом.
Почему 301 редирект в .htaccess может не работать?
Основные причины: модуль mod_rewrite не включен на сервере; файл .htaccess не читается из-за настроек AllowOverride в конфигурации Apache; синтаксическая ошибка в правиле; конфликт с другим правилом, которое срабатывает раньше; отсутствие флага [L] в RewriteRule. В первую очередь стоит проверить права на файл, синтаксис и порядок правил.
Какой вариант лучше использовать для www, index.php и смены домена?
Для www и без www, а также для смены домена — RewriteRule с RewriteCond, потому что здесь нужна проверка хоста или протокола. Для index.php и index.html обычно достаточно простого Redirect 301 /index.php https://example.com/ — это одна строка без условий. Для смены домена с сохранением пути — RewriteRule ^(.*)$ https://newdomain.com/$1 [R=301,L].
Не нашли ответ на свой вопрос?
Оставьте заявку или свяжитесь любым удобным способом — мы всегда на связи и готовы помочь
начнём прямо сейчас

Конкуренты не спят,
пора действовать