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

    Сергей Трофимов превью картинка Сергей Трофимов, Ведущий SEO аналитик

    Поделиться :

    В данном материале будут рассмотрены основные команды и правила настройки файла .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).

Возврат к списку

(0)

(Рейтинг: 4.75, голосов: 4 )

  • Комментарии
Загрузка комментариев...
     
Есть вопросы?
Наши менеджеры знают ответы!

Проконсультируйтесь по возникшим вопросам со специалистами и получите исчерпывающую информацию о своём сайте заполнив онлайн-заявку
на оценку вашего сайта. Обе услуги совершенно бесплатны, а процесс заполнения заявки займёт не больше минуты.

Оставить онлайн-заявку
Заказать обратный звонок
Спасибо! Скоро вам перезвонят!  
Клиентский отдел
и сервис контроля качества работает с понедельника по пятницу
с 10:00 до 19:00 по МСК.
Email: director@bdbd.ru
Поисковое продвижение. Интернет-реклама. Дизайн. Оценка качества сайтов и эффективности рекламы.

Также работает прямая телефонная линия клиентской службы:

+7 (495) 772–97–91
8 (800) 555–97–91

− бесплатно из регионов
115280, Россия, Москва, ул. Ленинская Слобода, д.19, стр.1,
бизнес-центр «Омега Плаза»
Карта проезда
+7 (495) 772–97–91
пн-пт с 10:00 до 19:00
8 (800) 555–97–91
Звоните нам из регионов бесплатно!
Проверить, что нужно именно вашему сайту
!!!
Оформление заявки
Спасибо! Скоро вам перезвонят!