RewriteCond %{HTTPS} off
RewriteRule .* - [E=SSL:s]
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteCond %{REQUEST_URI} !^(.*)/robots\.txt$
RewriteRule ^(.*)$ http%{ENV:SSL}://www.site.ru/$1 [R=301,L]
должен быть доступен по обоим протоколам http и https
robots.txt
############################################################################
#### Выбор основного зеркала (с www или без www) ####
############################################################################
# 1. Удалить www
#RewriteCond %{ENV:HTTPS} on
#Если включен https
#RewriteRule .* - [E=SSL:s]
#То создаем переменную ssl с текстом s
#RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
# Проверяем, содержит ли домен www в начале URL.
#RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
# Перенаправляем удаляем www
# 2. Добавить www
#RewriteCond %{ENV:HTTPS} on
#Если включен https
#RewriteRule .* - [E=SSL:s]
#То создаем переменную ssl с текстом s
#RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
# Если нет www в начале домена
#RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]
#Подставляем www и https если он включен.
RewriteCond %{HTTPS} off
RewriteRule .* - [E=SSL:s]
RewriteCond %{REQUEST_URI} !^(.*)/robots\.txt$
RewriteRule ^(.*)$ http%{ENV:SSL}://www.site.ru/$1 [R=301,L]