Есть сайт site.ru. На него прошлой осенью я получил сертификат с ныне нелюбимого производителями браузера startssl.com. Сертификат установил, проверил, что при ручном наборе с https не осталось смешанного контента и оставил так до зимы. Сейчас в свете грядущей версии хрома решил, что пора бы уже выставить https основным, но наткнулся на неприятную проблему: все попавшие в руки Android смартфоны сертификату моему не доверяли (Nougat не проверял). Пытаюсь сделать перенаправление при помощи .htaccess по следующим трём условиям:
1) Если сайт указан с поддоменом - перебросить на сайт без домена. То есть www.site.ru -> site.ru
2) Если по %{HTTP_USER_AGENT} я считаю, что посетитель с телефона - оставить ту версию сайта, которую он набрал. Ну, или можно перенаправить на http.
3) Если по %{HTTP_USER_AGENT} я считаю, что посетитель не с телефона - принудительно перенаправить на https.
В общем, у меня не получается совместить первое условие с остальными двумя. Либо не происходит обрезания www., либо я получаю ошибку Слишком много перенаправлений. Одна из последних попыток:
#Русские буквы я не использовал на сервере.
#Первое условие. Работает само по себе, не работает со следующим:
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^site\.ru [NC]
RewriteRule (.*) https://site.ru/$1 [R=301,L]
#Другие попытки:
#RewriteRule ^(https?)\:\/\/([a-z0-9\-\.]*)(.*)$ https://site.ru/$3 [R=301,L]
#RewriteRule (.*) https://site.ru%{REQUEST_URI}
#Второе и третье условия:
RewriteCond %{SERVER_PORT} !^443
RewriteCond %{HTTP_USER_AGENT} !(?i:samsung|iphone|android)
RewriteRule (.*) https://site.ru/$1 [R=301,L]
#Другая попытка:
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
UPD:
нашёл такой вариант, завтра проверю, как он будет работать совместно с проверкой UserAgent
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule (.*) https://site.ru/$1 [L,R=301]