Resolver o HTTP para secure.example.com é fácil. Você acabou de criar um host virtual adicional para direcionar para HTTPS:
<VirutalHost 10.0.0.1:80>
ServerName secure.example.com
Redirect / https://secure.example.com/
</VirtualHost>
Resolver o HTTPS para www.example.com é mais difícil. O problema é que geralmente você não pode fazer hospedagem virtual baseada em nome com HTTPS. A razão é que a conexão SSL é configurada antes que o Apache saiba com qual host você está tentando se conectar, portanto, não sabe qual certificado SSL deve ser enviado, portanto, precisa enviar o primeiro que ele conhece. O resultado é que, se você tentar fazer o SSL com base em nome, receberá o certificado errado em cada host virtual, exceto um, e o navegador exibirá um erro para o usuário. Você pode contornar isso usando um certificado curinga para * .example.com ou usando um certificado com um Nome alternativo de assunto nele. Infelizmente, esses certificados custam mais dinheiro e você pode encontrar suporte desigual em clientes mais obscuros.
Você pode adicionar um virtualhost semelhante para HTTPS que você fez com HTTP:
<VirtualHost 10.0.0.1:443>
ServerName www.example.com
Redirect / http://www.example.com/
</VirtualHost>
Se você resolveu o problema SSL, isso funcionará sem erros. Se você não o fez, o cliente deve receber uma mensagem de erro sobre o nome do host que não corresponde ao certificado, mas deve redirecionar para http.