Isso foi respondido no Stack Exchange:
Vou modificar a resposta para se adequar à sua situação. Ele diz "CONDIÇÃO: Se não 443, em seguida, reescrever para https. Isso deve remover os dados da porta. Sua condição anterior era baseada em protocolo e não em porta.
# redirect to 443 if current port is not 443
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://example.com/$1 [R=301,L]
AVISO: Eu não confiaria nessas regras se você estiver tentando forçar https. Eu desligaria totalmente a porta 80. Dessa forma, se eles resolverem suas regras, eles verão um erro 404.