загружаем...

Настройка редиректов 301 нескольких зеркал на основной домен с использованием https

Настройка редиректов 301 нескольких зеркал на основной домен с использованием https

Мы будем перенаправлять поддомен без www sute.ru, зеркало site1.ru и поддомен зеркала www.site1.ru на главное зеркало www.sute.ru.

Обычная цепочка редиректов при настройке автоматического редиректа 301 нескольких зеркал на один основной домен без использования https выглядит обычно так:

#перенаправляем основной домен без www
RewriteCond %{HTTP_HOST} ^site\.ru$
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
#перенаправляем зеркало с www
RewriteCond %{HTTP_HOST} ^www.\site1\.ru$
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
#перенаправляем зеркало без www
RewriteCond %{HTTP_HOST} ^site1\.ru$
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

При переходе на https у нас добавляется условие перенаправление основного зеркала http://www.site.ru на https://www.site.ru

Если сделать ее просто по аналогии - то при обращении к основному зеркалу www.site.ru возникает циклический редирект.

Например такой кусок кода в htaccess приведет к тому, что сайт по основному адресу просто не будет доступен:

#ОШИБКА которая вызовет циклический редирект при обращении к главному зеркалу www.site.ru
RewriteCond %{HTTP_HOST} ^www\.site\.ru$
RewriteRule ^(.*)$ https://www.site.ru/$1 [R=301,L]
#перенаправляем основной домен без www
RewriteCond %{HTTP_HOST} ^site\.ru$
RewriteRule ^(.*)$ https://www.site.ru/$1 [R=301,L]
#перенаправляем зеркало с www
RewriteCond %{HTTP_HOST} ^www.\site1\.ru$
RewriteRule ^(.*)$ https://www.site.ru/$1 [R=301,L]
#перенаправляем зеркало без www
RewriteCond %{HTTP_HOST} ^site1\.ru$
RewriteRule ^(.*)$ https://www.site.ru/$1 [R=301,L]

Для исключения такой ошибки в цепочку для основного зеркала надо добавить условие

RewriteCond %{HTTP:X-HTTPS} !1

Результирующий верный код перенаправлений будет выглядеть так:

#перенаправляем основной домен с www если к нему обратились по http
RewriteCond %{HTTP:X-HTTPS} !1
RewriteCond %{HTTP_HOST} ^www\.site\.ru$
RewriteRule ^(.*)$ https://www.site.ru/$1 [R=301,L]
#перенаправляем основной домен без www по любому протоколу
RewriteCond %{HTTP_HOST} ^site\.ru$
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
#перенаправляем зеркало без www по любому протоколу
RewriteCond %{HTTP_HOST} ^site1\.ru$
RewriteRule ^(.*)$ https://www.site.ru/$1 [R=301,L]
#перенаправляем зеркало с www по любому протоколу
RewriteCond %{HTTP_HOST} ^www\.site1\.ru$
RewriteRule ^(.*)$ https://www.site.ru/$1 [R=301,L]

Мы правильно делаем перенос сайтов на https.

Звоните нам по телефону +7 (4742) 39-07-59