Um host virtual simples é a melhor maneira de capturar todas as solicitações HTTP. Então você não pode redirecionar acidentalmente solicitações HTTPS. Algo como.
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
# Redirect subdomains.
RewriteEngine on
RewriteCond %{HTTP_HOST} (\w+.example.com)
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
# Everything else to www.example.com preserving URI path
Redirect 301 / https://www.example.com/
</VirtualHost