Настройка редиректов 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