Попробуйте это правило:
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^ https://www.%2%{REQUEST_URI} [L,R=301]
Это должно охватывать оба случая, в которых либо запрос не был HTTPS (первое условие), либо хост не запускается с www.
(второе условие). В этом случае третье условие будет захватывать хост без начального www.
(если имеется), который затем используется при замене правила.