Até onde eu sei, definir * como o ServerName corresponderá apenas a um literal *
como o nome do host e que não corresponde à correspondência de curingas pretendida ...
Seu host virtual fictício, a entrada VirtualHost que responderá a todas e quaisquer solicitações não qualificadas que não correspondam a nenhum dos nomes de domínio específicos explicitamente configurados, deve pela entrada primeiro VirtualHost em sua configuração.
<VirtualHost *:80>
# This is the first and will handle anything that is not example.[com | net | org]
...
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
...
</VirtualHost>
<VirtualHost *:80>
ServerName example.net
...
</VirtualHost>
<VirtualHost *:80>
ServerName example.org
...
</VirtualHost>
A segunda parte desta resposta tem uma configuração adequada para o VirtualHOST padrão: link