Ok, esta é uma pergunta antiga, mas desde que a encontrei no google, outros podem acabar aqui também e por que não dar a esses futuros visitantes uma solução diferente para o problema? (embora tecnicamente não seja uma resposta à pergunta dos OPs desde que você pediu um redirecionamento, mas acho que isso resolve o problema)
Dependendo do que você quer, você pode:
1) Ter tudo para o domínio ir para o mesmo diretório: example.com www.example.com foo.example.com todos vão para /var/www/example.com/app/www
<VirtualHost *:80>
ServerName catch.all
ServerAlias *
VirtualDocumentRoot /var/www/%-2.0.%-1.0/app/www
</VirtualHost>
2) Tenha uma estrutura de diretórios como / var / www / [domain] / [subdomain]
Tanto example.com quanto www.example.com vão para /var/www/example.com/www e shop.example.com será veiculado em /var/www/example.com/shop
<VirtualHost *:80>
ServerName sub.domain
ServerAlias *.*.*
VirtualDocumentRoot /var/www/%-2.0.%-1.0/%-3
</VirtualHost>
<VirtualHost *:80>
ServerName bare.domain
ServerAlias *.*
VirtualDocumentRoot /var/www/%-2.0.%-1.0/www
</VirtualHost>
Observação: o www será atendido pela regra sub.domain. E subdomínios não existentes resultarão em um 404.