Файл .htaccess и перенаправление на https одного домена


.htaccess перенаправление на https только одного домена может потребоваться если для основного доменного имени задано множество синонимов. Например, существует основной ресурс и сайты филиалов на поддоменах.



При этом может потребоваться перенаправлять только основной домен куда-то еще — чаще всего на https если SSL сертификат используется только для основного имени.



.htaccess перенаправление на https только одного домена


Чтобы перенаправление отрабатывало верно требуется в корне сайта разместить файл .htaccess и добавить в него приведенный ниже блок

mcedit .htaccess

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.ru [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.ru/$1 [R,L]



В случае если посетитель сайта будет обращаться к example.ru произойдет редирект на https://example.ru



Если же обращаться, например, к somehost.example.ru перенаправления не будет.



Таким же образом можно организовать перенаправление для любых других имен — в частности для версии сайта с www:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.ru [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.ru/$1 [R,L]




! От самого простого правила для создания редиректа это отличается только условием, определяющим запрашиваемый хост. Можно убрать (строка RewriteCond %{HTTP_HOST} ^) его и получить стандартный редирект.




Проверить происходит ли редирект можно используя консольную утилиту curl или специализированный сервис.


htaccess перенаправление на https только одного домена


На скриншоте можно видеть код ответа сервера HTTP 301, что означает постоянный редирект (можно настроить также 302 просто поменял значение в .htaccess), а также адрес на который производится переадресация.

Использовать .htaccess для задания редиректов можно на веб-серверах, на которых используется Apache.



Если применяется Nginx (это так в большинстве случаев) редиректы настраиваются иначе.

Читайте про настройку перенаправления для Nginx и том как определить, какой пакет работает на фронтэнде.

Сказать спасибо