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

Как настроить 301 редиректы в файле .htaccess

В данном материале будут рассмотрены основные команды и правила настройки файла .htaccess. Следует учитывать, что правила нужно размещать после двух команд:

  • Options +FollowSymLinks

    RewriteEngine On

  • Все правила выполняются в прямом порядке их следования в файле .htaccess и правило, написанное позже, и будет выполняться позже.
Комментарий

Если требуется написать комментарий, то необходимо перед ним поставить #, тогда всё, что написано после этого символа не будет учитываться

# комментарий

301 редирект с одной статической страницы на другую

Redirect 301 /contacts.html https://site.ru/ contacts

*Новый адрес необходимо указывать полностью

Переадресация через RewriteRule 

RewriteRule ^dir /dir-new/$1 [R=301,L]

Настройка редиректов с HTTP на HTTPS (для всех страниц)

RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTP} =on
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

301-редирект с домена без WWW на домен с WWW

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

С домена с WWW на без

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

Для HTTPS-версии:

RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTP} =on
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

301-редирект для страницы с GET параметрами

Например, есть страница вида: http://www.site.ru/catalog/brand-is-24f/?search=APIEU%20FRESH%20MATE%20MASK тогда для настройки 301 переадресации на новый адрес, необходимо использовать следующее правило:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^search=APIEU%20FRESH%20MATE%20MASK$
RewriteRule ^catalog/brand-is-24f/$ /catalog/new/? [R=301,L]

Со страницы без заданного параметра в корень

Если адрес имеет следующий вид: http://site.ru/?brand то для перенаправления подойдет последовательность строчек:

RewriteCond %{QUERY_STRING} ^brand$
RewriteRule ^$ /? [R=301,L]

301-редирект для конкретного файла, а не целой папки

Если требуется настроить переадресацию только для адреса https://site.ru/cat/, но при этом чтобы страница https://www.site.ru/cat/index.php?IBLOCK_ID=15 открывалась по старому адресу, необходимо использовать спецсимвол $ в правиле.

RewriteRule ^cat/$ https://site.ru/new/ [R=301,L]

Домены в зоне РФ

Для доменов в зоне РФ действуют все те же правила, но только все кириллические символы необходимо заменить на альтернативный код (он на латинице). В частности, сама зона .рф преобразуется в .xn--p1ai

301-редирект с домена на домен

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

И для домена в зоне РФ:

RewriteCond %{HTTP_HOST} ^xn-...\.xn--p1ai$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

Настройка переадресации на страницы со слешем / в конце

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.site.ru/$1/ [L,R=301]

Настройка переадресации со страниц со слешем / на страницы без слеша

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ http://www.site.ru/$1 [R=301,L]

Редирект с index.php на саму папку (корень) 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L]

Для всех индексных страниц на сайте:
RewriteRule ^(.*)index\.php$ http://www.site.ru/$1 [R=301,L]

Редирект со всех файлов домена, кроме папки администратора bitrix

RewriteRule ^bitrix/ /bitrix/admin/ [L,R=301]
RewriteRule ^(.*)$ http://www.newsite.ru/new/ [L,R=301]

Смена страниц с .html на .php

RedirectMatch 301 (.*)\.html$ http://www.site.ru$1.php

Перенос картинок/изображений из папки /img/ на поддомен

RewriteRule ^img/(.+)\.jpg$ http://img.domain.ru/$1.jpg [R=301,L]

Синтаксис для регулярных выражений

. — точка, способна заменить только один любой символ.

() — группировка;

! — символ отрицания;

# — старт текстового комментария в файле.

\ — «экранирующий» слеш, после которого другой символ теряет статут "специального" и становится обычным.

[abc] — обозначает перечень символов, совпадающих с буквами a, b, или с.

[^abc] — перечень символов, которые не входят в указанных диапазон. Совпадёт с любым символом, кроме a, b, или с.

* — означает, что предшествующий символ может повторяться (0 или более раз).

[abc]* — команда найдёт идущие подряд символы из заданного набора.

[^abc]* — с точностью до наоборот.

.* — заменяет абсолютно любой набор символов. ".*" — найдёт все подстроки между кавычками.

^ — указание начала строки.

$ — символ конца строки.

\w — буква, цифра или подчёркивание _.

\d — заменяет любую цифру.

\D — заменяет любой символ, но не цифру.

[0-9] — заменяет любую цифру.

[a-z] — любая буква от a до z (весь латинский набор символов) в нижнем регистре.

[A-Z] — любая буква от A до Z в ВЕРХНЕМ регистре.

[a-zA-Z] — любая буква от a до Z в любом регистре.

[a-Z] — то же самое.

Для указания дополнительных задач и опций используются флаги. Их перечисляют в квадратных скобках через запятую:

  • L — флаг Last, указывающий приостановку формирования URL-адреса, так что после него строка считается окончательной;
  • NC — флаг NoCase, за счет которого отключается проверка регистра символов, если правило срабатывает;
  • R — флаг Redirect необходим для остановки изменения URL-адреса, он возвращает прежний результат. Обычно используется значение R=301, но встречаются и другие вариации для временных перенаправлений (302, MOVED TEMPORARY).
Получить коммерческое
предложение
1
Какие виды услуг вас интересуют
ещё
2
Бюджет проекта
Укажите примерную сумму которую планируете потратить на разработку проекта
3
Оставьте ваши контакты и мы свяжемся с вами
Нажимая на кнопку «Отправить», я даю согласие на обработку своих персональных данных и соглашаюсь с политикой конфиденциальности.
Клиентский отдел и сервис контроля качества
с понедельника по пятницу с 10:00 до 19:00:
+7 (495) 308 08 19+7 (800) 555 97 91
бесплатно из регионов