Редирект 301 htaccess https на http
301 редирект c http на https через htaccess
301 редирект с http на https позволяет осуществить полный переезд сайта на защищенный протокол после установки SSL-сертификата.
Как сделать 301 редирект с http на https через htaccess
При переезде сайта с http на https (установка SSL-сертификата) потребуется код, который не требует дополнительных модификаций:
Второй метод осуществляет перенос с http://domain.ru на https://domain.ru:
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
Третий способ выполняет аналогичную функцию, но отключает перенаправление для robots.txt:
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
В 4-й версии конечным пунктом для пользователя станет https://www.domain.ru:
RewriteRule ^(.*)$ https://www.domain.ru/$1 [R=301,L]
Позволяет сделать форвардинг с http://www.poddomen.domain.ru на https://poddomen.domain.ru:
RewriteCond %
RewriteRule ^(.*)$ https://poddomen.domain.ru/$1 [R=301,L]
Последняя версия, дающая возможность сделать связь между http://poddomen.domain.ru на https://www.poddomen.domain.ru:
RewriteCond %
RewriteRule ^(.*)$ https://www.poddomain.domain.ru/$1 [R=301,L]
Перенаправление с https на http
При необходимости сделать обратную интеграцию и перейти на незащищенную версию протокола можно воспользоваться:
Как это сделать?
Для того, чтобы выполнить правило, потребуется посетить административную панель хостинга (или же зайти через FTP), где в корневой папке сайта лежит файл htaccess.
Вводим нужное нам правило.
Как проверить работу 301 редиректа?
Для этого можно использовать инструмент проверки ответа сервера Яндекса:
Здесь вводим адрес первой страницы и видим следующее:
Как видим правило применилось и работает корректно.
Подписывайтесь на наш канал в Яндекс.Дзен
Подписывайтесь на наши социальные сети
Вам также будет интересно
Комментарии 4
Выдает ошибку — ERR_TOO_MANY_REDIRECTS
(( Как быть?
Добрый день, спасибо за обратную связь, скорей всего у Вас стоит слишком много правил на редиректы. Рекомендую отключить лишние модули на сайте, которые перенаправляют пользователей, так как Ваш сайт на WordPress использовать именно модуль для редиректа, это проще и легче.
Как это сделать описано здесь: https://seopulses.ru/redirect-dlya-sayta-na-wordpress-cherez-plagin-ili-htaccess/
Ты своей говно — статьёй вводишь людей в заблуждение!
Я из-за тебя кучу времени потратил!
Долбоёб — удали свою писанину и не занимайся этим.
Добрый день, спасибо за обратную связь, не могли бы подсказать какой именно момент в инструкции вызвал проблемы?
Код состояния HTTP 301 или Moved Permanently («Перемещено навсегда») — стандартный код ответа сервера, который может быть получен, если запрошенный URL-адрес сайта был навсегда перенесен в новое месторасположение.
Проверка кода ответа. Быстрая и бесплатная проверка кодов ответа для списка URL в режиме онлайн реализована в рамках комплекса инструментов «Пиксель Тулс», предусмотрено удобное цветовое кодирование и загрузка URL файлом.
Анализ проведён с помощью инструментов в сервисе Пиксель Тулс.
Options +FollowSymLinks
RewriteEngine On
# Текстовый комментарий, данная строчка не будет обрабатываться.
RewriteCond %
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
RewriteCond %
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteCond %
RewriteCond %
RewriteRule ^(.*)$ https://pixelplus.ru/$1 [R=301,L]
Redirect 301 /was.php http://www.site.ru/new.php
При этом, новый адрес указывать необходимо полностью с http и доменным именем.
RewriteRule ^dir /dir-new/$1 [R=301,L]
Скажем, адрес страницы имеет вид: http://www.site.ru/dir/index.php?IBLOCK_ID=1&SECTION_ID=111 тогда для настройки 301 переадресации на новый адрес, необходимо использовать следующее правило:
RewriteCond %
RewriteRule ^dir/index\.php$ /new/sef/? [R=301,L]
Если один (или несколько) из GET параметров не задан(ы) или может иметь произвольное значение (в нашем примере это SECTION_ID), можно использовать следующий код:
RewriteCond %
RewriteRule ^dir/index\.php$ /new/sef/? [R=301,L]
Если адрес имеет следующий вид: http://www.site.ru/?abc то для перенаправления подойдет последовательность строчек:
RewriteCond %
RewriteRule ^$ /? [R=301,L]
Если требуется настроить переадресацию только для адреса http://www.site.ru/dir/, но при этом чтобы страница http://www.site.ru/dir/index.php?IBLOCK_ID=1 открывалась по старому адресу, необходимо использовать спецсимвол $ в правиле.
RewriteRule ^dir/$ http://www.site.ru/new-dir/ [R=301,L]
Для доменов в зоне РФ действуют все те же правила, но только все кириллические символы необходимо заменить на альтернативный код (он на латинице). В частности, сама зона .рф преобразуется в .xn--p1ai.
RewriteCond %
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
И для домена в зоне РФ:
RewriteCond %
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
RewriteCond %
RewriteRule ^(.*)$ http://www.site.ru/si-te/ [R=301,L]
RewriteRule ^bitrix/ /bitrix/admin/ [L,R=301]
RewriteRule ^(.*)$ http://www.newsite.ru/new/ [L,R=301]
RewriteRule ^dir(.*)$ /new-file.php [L,R=301]
RewriteRule ^dir/no-file.html /no-file-new.html [L,R=301]
RewriteRule ^dir(.*)$ /all.php [L,R=301]
RedirectMatch 301 (.*)\.html$ http://www.new-site.ru$1.php
RewriteRule ^img/(.+)\.jpg$ http://img.domain.ru/$1.jpg [R=301,L]
Указывается порядок загрузки типов индексного файла, лежащих в корне каталога.
DirectoryIndex index.html index.php index.htm index.shtml
RewriteCond %
RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L]
Для всех индексных страниц на сайте:
RewriteRule ^(.*)index\.php$ http://www.site.ru/$1 [R=301,L]
RewriteCond %
RewriteRule ^(.*)$ http://site.ru%
RewriteRule [^abc]/unique-file.html /unique-file.html [R=301,L]
Код позволяет поставить 301-редирект со всех папок вида http://site.ru/***/uniqe-file.html на один файл в корне /unique-file.html. Бывает полезен при переделке сайта и изменении ссылок.
RewriteRule ^testovyi/test/?$ /studio/news/detail.php?ID=230354&PAGEN_2=11 [NC,L]
Код позволяет создать копию страницы с относительным адресом /studio/news/detail.php?ID=230354&PAGEN_2=11 по адресу /testovyi/test/
Позволяет устранить наличие дублей URL с HTTPS в индексе поисковых систем.
RewriteCond %
RewriteCond %
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
Настройка позволяет отклонить спамный реферальный трафик с ряда ресурсов по заголовку HTTP_REFERER.
Внимание, важно чтобы код ответа сервера для 404 ошибки был именно 404. Путь к файлу указывается с помощью следующей строчки:
ErrorDocument 404 /404-for-me.php
! Для сайтов, на которых используется не сервер Apache, аналогичные 301-редиректы легко настраиваются с помощью PHP.
! Оптимально настраивать все редиректы сразу на конечную страницу (без промежуточных перенаправлений, в один шаг) это улучшает их восприятие со стороны поисковых систем и пользователей.
RewriteCond %
RewriteRule (.*) http://mobile.site.ru/ [L,R=301]
RewriteCond %
RewriteRule (.*) http://no-search.site.ru/ [L,R=301]
Переадресация с www.site.ru/component/content/?view=featured на www.site.ru/
RewriteCond %
RewriteRule ^component/content/$ /? [R=301,L]
Переадресация с www.site.ru/index.php?idc=4&marea=6 на www.site.ru/
RewriteCond %
RewriteRule ^index\.php$ /? [R=301,L]
. — Точка заменяет произвольный символ.
[abc] — обозначает перечень символов, совпадающих с буквами a, b, или с.
[^abc] — перечень символов, которые не входят в указанных диапазон. Совпадёт с любым символом, кроме a, b, или с.
* — означает, что предшествующий символ может повторяться (0 или более раз).
[abc]* — команда найдёт идущие подряд символы из заданного набора.
[^abc]* — с точностью до наоборот.
.* — заменяет абсолютно любой набор символов. «.*» — найдёт все подстроки между кавычками.
^ — начало строки (в том случае, если используется в начале выражения).
$ — обозначает конец строки.
\w — буква, цифра или подчёркивание _.
\d — заменяет любую цифру.
\D — заменяет любой символ, но не цифру.
7 — заменяет любую цифру.
[a-z] — любая буква от a до z (весь латинский набор символов) в нижнем регистре.
[A-Z] — любая буква от A до Z в ВЕРХНЕМ регистре.
[a-zA-Z] — любая буква от a до Z в любом регистре.
[a-Z] — то же самое.
Памятка по используемым символам и обозначениям
Строчка RewriteCond — условие выполнения правила RewriteRule. Если условие выполняется, то срабатывает редирект. Правила могут задаваться с помощью регулярных выражений.
Спецсимволы, используемые в правилах и их значения.
Модификаторы используются после обычных, спецсимволов или их групп и позволяют расширить возможности шаблонов для срабатывания правил.
Флаги, задают доп. опции для используемого правила. Перечисляются в квадратных скобках через запятую, скажем [NC] или [R=301,L].
Как сделать 301 редирект (переадресацию) через htaccess
Редирект (перенаправление или форвардинг) —позволяет автоматически переадресовать пользователя, посетившего страницу А на страницу Б. Например, пользователь, пытающийся открыть страницу site.ru/page1/ будет попадать на site.ru/page2.
Как сделать редирект через файл htaccess
Для того, чтобы перенаправить пользователя с одной страницы на другую требуется использовать следующую комбинацию:
Redirect 301 site.ru/page1/ site.ru/page2/
Важно! Можно записывать адреса в относительном виде, например, /page1/ и /page2/.
Также допускается использование конструкции:
Redirect permanent site.ru/page1/ site.ru/page2/
Для того, чтобы выполнить правило, потребуется посетить административную панель хостинга (или же зайти через FTP), где в корневой папке сайта лежит файл htaccess.
Вводим нужное нам правило.
Как проверить работу 301 редиректа?
Для этого можно использовать инструмент проверки ответа сервера Яндекса:
Здесь вводим адрес первой страницы и видим следующее:
Как видим правило применилось и работает корректно.
Как сделать перенаправление на другой домен?
В этом случае необходимо автоматически перекидывать всех пользователей с домена domain1.ru на domain2.ru при помощи функции:
RewriteRule ^(.*)$ http://www.domain2/$1 [R=301,L]
Переадресация с http на https
При переезде сайта с http на https (установка SSL-сертификата) потребуется код, который не требует дополнительных модификаций:
Второй метод осуществляет перенос с http://domain.ru на https://domain.ru:
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
Третий способ выполняет аналогичную функцию, но отключает перенаправление для robots.txt:
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
В 4-й версии конечным пунктом для пользователя станет https://www.domain.ru:
RewriteRule ^(.*)$ https://www.domain.ru/$1 [R=301,L]
Позволяет сделать форвардинг с http://www.poddomen.domain.ru на https://poddomen.domain.ru:
RewriteCond %
RewriteRule ^(.*)$ https://poddomen.domain.ru/$1 [R=301,L]
Последняя версия, дающая возможность сделать связь между http://poddomen.domain.ru на https://www.poddomen.domain.ru:
RewriteCond %
RewriteRule ^(.*)$ https://www.poddomain.domain.ru/$1 [R=301,L]
301 редирект с домена без WWW на с WWW
В функции ниже осуществляется переход из www.poddomen.domain.ru на poddomen.domain.ru:
RewriteCond %
RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]
Если же первый способ не помог можно использовать данную версию:
RewriteCond %
RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]
С www на без WWW
RewriteCond %
RewriteRule ^(.*)$ http://www.poddomen.domain.ru/$1 [R=301,L]
Также имеется второй метод не требующий ввода доменного имени:
C https на http
При необходимости сделать обратную интеграцию и перейти на незащищенную версию протокола можно воспользоваться:
301 редирект на http для одной страницы
В этой ситуации подойдет:
Второй метод осуществляет общий переезд на защищенный протокол (https), но одна страница останется на старом протоколе (http). Этот способ подойдет для интеграции 1С Bitrix с 1С Предприятие, так как система не может работать с защищенным протоколом:
Для готовой интеграции с 1С-Битрикс, формула позволяющая исключить директорию bitrix/admin/1c_exchange.php из общего правила:
RewriteCond %
Форвардинг на https для конкретной страницы
Для этой цели можно воспользоваться:
RewriteCond %
С несуществующего файла
В этом случае можно будет применить:
RewriteRule ^(.*)$ /poddomen/script.php [R=301,L]
Также подойдет второй способ:
RewriteCond %
RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]
Перенаправление на подкаталог
В этом случае возможно пербрасывать пользователей с poddomen.domain.ru на подкаталог poddomen.
RewriteEngine on
RewriteBase /
RewriteCond %
RewriteCond %
RewriteRule ^index.php(.*)$ /poddomen/$1 [L,QSA]
RewriteEngine on
RewriteBase /
RewriteCond %
RewriteCond %
RewriteRule ^(.*)$ /poddomen/$1 [L]
В случае, когда речь идет о www.poddomen.doamin.ru необходимо применить:
RewriteRule ^(.*)$ /poddomen/$1 [L]
С любой страницы на главную
RewriteRule ^(.*)$ index.php [L,QSA]
С поддомена на основной домен
Если требуется выполнить условие для всех поддоменов без исключения:
RewriteCond %
RewriteRule (.*) http://site.ru/$1?region=%1 [L,R=301,QSA]
Когда речь идет о конкретном поддомене следует использовать:
На хостинге RU-CENTER в настоящее время используется веб-сервер Apache версии 2.4.
Директивы файла .htaccess действуют для каталога, в котором размещён такой файл, и для всех его подкаталогов. Если вы желаете с помощью .htaccess изменить настройки для сайта в целом, его следует размещать в корневом каталоге сайта
Пожалуйста, будьте внимательны при редактировании файла .htaccess! При сохранении такого файла в кодировке UTF-8 в нём не должно присутствовать BOM-сигнатуры. Для редактирования файла .htaccess и других конфигурационных файлов мы рекомендуем использовать не «Блокнот» Windows, а специальные текстовые редакторы, например Notepad++.
1. Перенаправление доменов c синонима сайта на основной домен с кодом 301
Перенаправить запросы на domain.ru с любого из синонимов сайта
RewriteEngine On
RewriteCond %
RewriteRule ^(.*)$ http://domain.ru/$1 [L,R=301]
Перенаправить запросы на www.domain.ru с любого из синонимов сайта
RewriteEngine On
RewriteCond %
RewriteRule ^(.*)$ http://www.domain.ru/$1 [L,R=301]
Эти правила рекомендуется размещать в самом начале файла .htaccess.
2. Постоянное перенаправление с кодом 301
Redirect 301 /page.html http://www.domain.ru/new_page.html
Например, для перенаправления всех запросов к странице /period/?test=123 вашего сайта на domain.ru, вы можете написать:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %
RewriteRule ^period/$ http://domain.ru/ [L,R=301]
3. Переопределение страниц ошибок
#401 Авторизация не выполнена
ErrorDocument 401 http://domain.ru/errors/401.html
#403 Доступ запрещен
ErrorDocument 403 http://domain.ru/errors/403.html
#404 Страница не найдена
ErrorDocument 404 http://domain.ru/errors/404.html
#500 Внутренняя ошибка сервера
ErrorDocument 500 http://domain.ru/errors/500.html
Соответствующие файлы страниц ошибок (401.html, 404.html и др.) необходимо разместить в каталоге
Для того чтобы при случайном упоминании прямых ссылок на такие страницы они не проиндексировались в поисковых системах, рекомендуется:
User-agent: *
Disallow: /errors
/ваш_домен/docs/errors/.htaccess, в котором прописать
4. Постраничное перенаправление запросов на другой домен c кодом 301
Следующий код перенаправит все запросы к страницам вашего сайта на аналогичные страницы другого сайта, например, запрос http://domain.ru/main будет переадресован на http://www.newdomain.ru/main:
Redirect 301 / http://www.newdomain.ru/
RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.ru/$1 [R=301,L]
5. Ограничение доступа к сайту по IP
Запретить доступ к сайту с IP-адресов 123.4.5.6 и 123.5.4.3
Order Allow,Deny
Allow from all
Deny from 123.4.5.6 123.5.4.3
Запретить доступ к сайту со всех адресов кроме 123.4.5.6 и 123.5.4.3:
Order Deny,Allow
Deny from all
Allow from 123.4.5.6 123.5.4.3
Запретить доступ к сайту для всех:
6. Переопределение главной страницы сайта (индексного файла каталога)
Сделать главной страницей файл menu.html:
8. Запрет выдачи листинга каталога
В случае отсутствия в папке главной страницы (индексного файла), при обращении без указания конкретного имени файла в запросе будет выдан список всех файлов, находящихся в каталоге. Для того чтобы запретить отображение листинга каталога, добавьте в файл .htaccess строку:
Скрипт должен иметь атрибут исполнения (+x, права доступа, начинающиеся с 7, например, 755).
10. Блокировка переходов со сторонних ресурсов
Для запрета перехода c baddomain.ru на domain.ru добавьте в .htaccess следующее:
Если требуется запретить переходы с нескольких доменов, то используйте следующие директивы
В файле .htaccess использование кириллицы не допускается. При составлении правил перенаправления для кириллических доменов необходимо указывать имя домена в punycode. Узнать имя домена в punycode можно с помощью сервиса Whois.
Например, для перенаправления site.ru на caйт.рф нужно воспользоваться следующим правилом:
RewriteEngine on
RewriteCond %
RewriteRule ^(.*)$ http://xn--80aswg.xn--p1ai/$1 [R=301,L]
В этом случае ваши посетители могут увидеть именно punycode-представление доменного имени в адресной строке браузера. Это не является ошибкой.
12. Перенаправление с HTTP на HTTPS и обратно
Для работы перенаправления на сайте должен быть установлен действительный SSL-сертификат.
Перенаправить запросы на https://domain.ru
Перенаправить запросы на http://domain.ru
3. Диагностика ошибок
Если после редактирования или размещения .htaccess при обращении к сайту вы получили ошибку 500, то, скорее всего, в файле .htaccess допущена ошибка. Посмотреть её причины вы можете в лог-файле /var/log/ваш_домен.error_log.
с http на https
или как другой вариант
с https на http
редирект с одной страницы на другую
редирект с www на без www (главное зеркало – домен без www)
редирект с без www на www (главное зеркало – домен с www)
редирект со страниц со слешем на без слеша (весь сайт)
редирект со страниц без слеша на слеш (часто в CMS системах устанавливается автоматически)
один (а не два последовательных!) редирект на без www и с слешем на конце адреса страницы
один (а не два последовательных!) редирект на c www и со слешем на конце адреса страницы
один (а не два последовательных!) редирект на c www и без слеша на конце адреса страницы
один (а не два последовательных!) редирект на без www и без слеша на конце адреса страницы
редирект только адреса site.ru/index.php (без GET параметров) на основное зеркало site.ru
редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)
редирект для index.php, index.html или index.htm (например в Joomla), массовая склейка
редирект url с GET параметрами (динамический URL) на статический
1 вариант (простой адрес с GET параметром)
2 вариант (со страницы и GET параметром)
все страницы одного домена на главную страницу другого домена
каждая страница одного домена на такой же адрес другого url