301 редирект на https с www через htaccess

Итак, вам потребовалось сделать 301 редирект, на домен www с протоколом https.

Рабочий код редиректа в данном случае выглядит так:

RewriteEngine on
 
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Обратите внимание, для того чтобы редирект работал нормально, SSL сертификат должен быть действителен для обоих доменов (с www и без).

Рассмотрим код, который находится после RewriteEngine on.
Первые 2 строки проверяют начинается ли домен с "www.", и если не начинается, то выполняется переадресация.
Оставшиеся строки, проверяют, что сайт запрашивается по протоколу https, и в противном случае переадресует на этот протокол.

Альтернативный вариант, которые делает то же самое:

RewriteEngine on
 
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 
RewriteCond %{ENV:HTTPS} !on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]

Возможно вам будет интересно прочитать и про редирект на вариант сайта без www с учетом https.

Чтобы не возникло проблем с индексацией поисковыми системами, изучите соответствующие разделы:

Yandex: Переход сайта на HTTPS

Google: Перенос сайта с изменением URL

Небольшая шпаргалка, по htaccess: https://github.com/phanan/htaccess (en)

Пишите в комментариях, помогло вам или нет.