Skip to content

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

Содержание

301 редирект
Об авторе:
Пивиков Денис
Пивиков Денис
Более 10 лет занимаюсь разработкой и продвижением сайтов под ключ

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, а поисковая система получает сигнал о постоянном переносе страницы.

Схема работы:

  1. Запрашивается старый URL.
  2. Apache проверяет правила .htaccess.
  3. Срабатывает правило 301.
  4. Сервер возвращает новый адрес.
  5. Браузер переходит на новый URL.
  6. Поисковая система обрабатывает постоянное перенаправление.

301 используется именно для постоянного изменения адреса страницы, поэтому его применяют при смене URL, домена, протокола или основной версии сайта.

Redirect 301 или RewriteRule: что лучше и чем отличаются

Redirect 301 подходит для простых перенаправлений, а RewriteRule — для условий, регулярных выражений и сложных преобразований URL. Если задачу можно решить через Redirect, использование mod_rewrite не обязательно.

ЗадачаПодход
Одна страница → другаяRedirect 301
Несколько конкретных страницRedirect 301
Массовый перенос URL по шаблонуRewriteRule
Редирект при определённом условииRewriteCond + RewriteRule
HTTP → HTTPSRewriteCond + RewriteRule
www → без wwwRewriteCond + RewriteRule

mod_alias или mod_rewrite для 301 редиректа

mod_alias используется для простых перенаправлений, включая Redirect 301, а mod_rewrite предоставляет более широкие возможности для работы с URL. Поэтому выбор зависит не от SEO-эффекта самого модуля, а от сложности задачи.

Характеристикаmod_aliasmod_rewrite
Простой редиректДаДа
Регулярные выраженияОграниченноДа
Условия RewriteCondНетДа
Массовые правила по шаблонуОграниченноДа

301 или 302 редирект: что лучше для SEO

301 применяется при постоянном изменении адреса, а 302 — когда перенаправление является временным. Если старая страница окончательно переехала на новый URL, для такого сценария используется 301.

СитуацияКод
Страница перенесена навсегда301
Сайт переехал на другой домен301
HTTP → HTTPS301
Временное перенаправление302
Временные технические работы302

301 редирект в .htaccess или PHP

Редирект в .htaccess обрабатывается веб-сервером, а PHP-редирект выполняется после запуска PHP-скрипта. Для обычных статических SEO-перенаправлений .htaccess позволяет решить задачу без передачи запроса в приложение.

Критерий.htaccessPHP
Уровень обработкиВеб-серверПриложение
Простые статические редиректыПодходитПодходит, но обычно избыточен
Зависимость от данных приложенияОграниченаПодходит
Массовые правила URLRewriteRuleПрограммная логика

Как сделать 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-код ответа;
  • исключить цепочки и циклы редиректов.
Оставить заявку
Мы используем cookie. Это позволяет нам анализировать взаимодействие пользователей с сайтом и делать его лучше. Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie.