301 редирект в .htaccess — это постоянное перенаправление со старого URL на новый. На сервере Apache его можно настроить с помощью директивы Redirect 301 или правил RewriteRule из модуля mod_rewrite.
Для простого перенаправления одной страницы достаточно одной строки Redirect 301. Если нужны условия, регулярные выражения, массовая обработка URL, перенос домена или принудительный переход с HTTP на HTTPS, используется связка RewriteCond + RewriteRule.
Как сделать 301 редирект через .htaccess
Чтобы сделать 301 редирект через .htaccess, откройте файл в корневой директории сайта и добавьте правило перенаправления. Для простого переноса страницы используется Redirect 301, а для более сложных сценариев — RewriteRule.
Простейший вариант:
Redirect 301 /old-page.html /new-page.html
Через mod_rewrite это же перенаправление выглядит так:
RewriteEngine On
RewriteRule ^old-page\.html$ /new-page.html [R=301,L]
После сохранения файла старый URL должен возвращать HTTP-код 301 Moved Permanently и отправлять пользователя на новый адрес.
Где прописывать 301 редирект и как настроить .htaccess
Правило 301 редиректа прописывается в файле .htaccess, расположенном в корневой директории сайта. Доступ к нему обычно получают через файловый менеджер хостинга или FTP.
Если файла нет, его можно создать в корневой папке сайта. Перед изменением рекомендуется сохранить резервную копию существующего .htaccess.
При использовании mod_rewrite в файле должна присутствовать директива:
RewriteEngine On
Правила лучше располагать от более конкретных к более общим. Это снижает вероятность того, что общее правило перехватит запрос раньше нужного перенаправления.
Синтаксис 301 редиректа в .htaccess: примеры
Для простого редиректа используется конструкция Redirect 301 старый-url новый-url. Для условий и преобразований URL применяется конструкция RewriteRule … [R=301,L].
Redirect 301
Redirect 301 /old-page.html /new-page.html
RewriteRule
RewriteEngine On
RewriteRule ^old-page\.html$ /new-page.html [R=301,L]
В R=301 указывается постоянное перенаправление, а флаг L прекращает обработку последующих правил после срабатывания текущего.
Массовый редирект по структуре URL
RewriteEngine On
RewriteRule ^old-folder/(.*)$ /new-folder/$1 [R=301,L]
Такой подход позволяет перенаправить группу страниц, если старые и новые URL имеют одинаковую структуру.
Как работает 301 редирект в .htaccess
При обращении к старому URL Apache проверяет правила .htaccess и, если находит соответствующее правило, возвращает браузеру HTTP-ответ 301 Moved Permanently с новым адресом. Браузер после этого открывает новый URL, а поисковая система получает сигнал о постоянном переносе страницы.
Схема работы:
- Запрашивается старый URL.
- Apache проверяет правила .htaccess.
- Срабатывает правило 301.
- Сервер возвращает новый адрес.
- Браузер переходит на новый URL.
- Поисковая система обрабатывает постоянное перенаправление.
301 используется именно для постоянного изменения адреса страницы, поэтому его применяют при смене URL, домена, протокола или основной версии сайта.
Redirect 301 или RewriteRule: что лучше и чем отличаются
Redirect 301 подходит для простых перенаправлений, а RewriteRule — для условий, регулярных выражений и сложных преобразований URL. Если задачу можно решить через Redirect, использование mod_rewrite не обязательно.
| Задача | Подход |
|---|---|
| Одна страница → другая | Redirect 301 |
| Несколько конкретных страниц | Redirect 301 |
| Массовый перенос URL по шаблону | RewriteRule |
| Редирект при определённом условии | RewriteCond + RewriteRule |
| HTTP → HTTPS | RewriteCond + RewriteRule |
| www → без www | RewriteCond + RewriteRule |
mod_alias или mod_rewrite для 301 редиректа
mod_alias используется для простых перенаправлений, включая Redirect 301, а mod_rewrite предоставляет более широкие возможности для работы с URL. Поэтому выбор зависит не от SEO-эффекта самого модуля, а от сложности задачи.
| Характеристика | mod_alias | mod_rewrite |
|---|---|---|
| Простой редирект | Да | Да |
| Регулярные выражения | Ограниченно | Да |
| Условия RewriteCond | Нет | Да |
| Массовые правила по шаблону | Ограниченно | Да |
301 или 302 редирект: что лучше для SEO
301 применяется при постоянном изменении адреса, а 302 — когда перенаправление является временным. Если старая страница окончательно переехала на новый URL, для такого сценария используется 301.
| Ситуация | Код |
|---|---|
| Страница перенесена навсегда | 301 |
| Сайт переехал на другой домен | 301 |
| HTTP → HTTPS | 301 |
| Временное перенаправление | 302 |
| Временные технические работы | 302 |
301 редирект в .htaccess или PHP
Редирект в .htaccess обрабатывается веб-сервером, а PHP-редирект выполняется после запуска PHP-скрипта. Для обычных статических SEO-перенаправлений .htaccess позволяет решить задачу без передачи запроса в приложение.
| Критерий | .htaccess | PHP |
|---|---|---|
| Уровень обработки | Веб-сервер | Приложение |
| Простые статические редиректы | Подходит | Подходит, но обычно избыточен |
| Зависимость от данных приложения | Ограничена | Подходит |
| Массовые правила URL | RewriteRule | Программная логика |
Как сделать 301 редирект с одной страницы на другую
Для перенаправления одной страницы на другую достаточно указать старый и новый URL в директиве Redirect 301. Такой вариант подходит, когда адреса известны заранее и не требуется дополнительная логика.
Redirect 301 /old-page.html /new-page.html
Через mod_rewrite:
RewriteEngine On
RewriteRule ^old-page\.html$ /new-page.html [R=301,L]
Как сделать 301 редирект с HTTP на HTTPS
Для перенаправления HTTP на HTTPS нужно проверить, что запрос пришёл по незащищённому протоколу, и только после этого отправить пользователя на HTTPS-версию. В .htaccess это выполняется через RewriteCond и RewriteRule.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Проверка %{HTTPS} off нужна, чтобы правило применялось к HTTP-запросам и не создавало бесконечное перенаправление для HTTPS.
Как сделать 301 редирект с www на без www
Для перенаправления версии сайта с www на вариант без www проверяется значение HTTP_HOST. Если запрос пришёл на домен с префиксом www, сервер возвращает 301 на домен без него.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
При выборе основного зеркала сайта важно использовать только одну схему перенаправления, чтобы не создавать цепочки и циклы.
Как сделать 301 редирект с одного домена на другой
Для переноса сайта на другой домен используется проверка старого доменного имени и 301-перенаправление на новый домен. Конкретное правило зависит от того, нужно ли сохранять путь исходного URL.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-domain\.ru$ [NC]
RewriteRule ^(.*)$ https://new-domain.ru [R=301,L]
[нужны данные: старый домен, новый домен и требование по сохранению URL-путей]
Как сделать массовый 301 редирект в .htaccess
Массовые 301 редиректы настраиваются через RewriteRule с регулярным выражением, которое соответствует группе старых URL. Если структура старых и новых адресов отличается, правило необходимо составлять с учётом конкретной карты перенаправлений.
RewriteEngine On
RewriteRule ^old-folder/(.*)$ /new-folder/$1 [R=301,L]
Для сложного переноса перед созданием правил необходимо составить соответствия «старый URL → новый URL». [нужны данные: список URL, новая структура сайта и исключения]
Как настроить 301 редирект с index.php на главную
Отдельное универсальное правило для перенаправления index.php на главную зависит от структуры конкретного сайта и существующих правил .htaccess. Поэтому без этих данных безопасный готовый вариант указывать нельзя.
[нужны данные: точный URL index.php, адрес главной страницы и существующие правила RewriteRule]
Как убрать старый URL через 301 редирект
Чтобы старый URL перестал использоваться как самостоятельная страница, его можно перенаправить на актуальный адрес с кодом 301. Старый адрес при этом не удаляется из правилами сервера, а становится источником постоянного перенаправления.
Redirect 301 /old-page.html /new-page.html
Если для старого URL нет релевантной новой страницы, выбор назначения нужно делать отдельно: перенаправление на нерелевантную страницу может быть хуже, чем корректная обработка отсутствующего URL.
301 редирект в .htaccess с сохранением параметров
Для редиректа, который должен учитывать или преобразовывать GET-параметры, обычно требуется mod_rewrite. Конкретное правило зависит от названий параметров, их значений и структуры нового URL.
Например, если старый адрес имеет вид:
/catalog.php?id=123
а новый должен выглядеть как:
/catalog/123
нельзя использовать универсальное правило без уточнения структуры сайта. [нужны данные: исходный URL, параметры и требуемый новый формат URL]
Как проверить 301 редирект после настройки .htaccess
После изменения .htaccess необходимо проверить старый URL и убедиться, что сервер возвращает 301 Moved Permanently, а затем открывается новый адрес. Одновременно следует проверить отсутствие цепочки или цикла перенаправлений.
Минимальная проверка включает:
- старый URL доступен для запроса;
- сервер возвращает статус 301;
- в заголовке ответа указан правильный новый адрес;
- новый URL открывается без дополнительного ненужного редиректа;
- HTTPS- и www-версии не образуют цикл.
Настройка 301 редиректов: цена и заказ услуги
Стоимость настройки 301 редиректов зависит от состава работ, но в предоставленных исходных данных нет конкретных тарифов. Поэтому цену одного редиректа, массового переноса или полного аудита .htaccess без дополнительных данных указывать нельзя.
Если требуется заказать настройку, исполнителю обычно потребуется список старых URL, новые адреса, информация о сервере и существующий файл .htaccess. Для массового переноса дополнительно нужна карта соответствий URL.
Специалист по настройке 301 редиректов: отзывы и рейтинг
Выбирать специалиста для настройки 301 редиректов следует с учётом опыта работы с Apache, .htaccess и SEO-переездами. В предоставленных исходных данных нет информации о конкретных специалистах, компаниях, рейтингах или отзывах.
Что проверить перед публикацией правил .htaccess
Перед публикацией новых правил сохраните резервную копию .htaccess и проверьте существующую конфигурацию. Особенно важно проверить порядок правил, синтаксис и отсутствие конфликтующих перенаправлений.
- сделать резервную копию .htaccess;
- проверить существующие Redirect и RewriteRule;
- убедиться в наличии RewriteEngine On для mod_rewrite;
- расположить конкретные правила выше общих;
- проверить старые URL;
- проверить новые URL;
- проверить HTTP-код ответа;
- исключить цепочки и циклы редиректов.
