Pelo que estou lendo, você precisaria de duas entradas separadas do VirtualHost, uma para HTTP e outra para HTTPS. Eles são diferentes pela porta (: 80 para HTTP e: 443 para HTTPS) e também porque você tem a seção SSL On para HTTPS. Cada um precisaria ter todos os nomes listados:
ServerName beta.example.com
ServerAlias example.com www.example.com
Então, você teria todos os mesmos DocumentRoot e outras informações listadas. Para o HTTP VirtualHost, você já sabe que precisa redirecionar, porque você sabe que quer HTTPS, então você só precisa do RewriteRule:
RewriteRule ^ https://beta.example.com%{REQUEST_URI} [R=301,L]
Para o VirtualHost HTTPS, você precisaria do mesmo RewriteRule, mas também precisaria adicionar uma condição:
RewriteCond %{HTTP_HOST} !^beta\.example\.com$
RewriteRule ^ https://beta.example.com%{REQUEST_URI} [R=301,L]
O RewriteCond está lá para impedir um redirecionamento sem fim.
Isso permitiria controlar os redirecionamentos em um único lugar. Se você não tem um motivo para criar um VirtualHost para cada domínio, é mais simples ter um.