Я думаю, что вам нужна опция ServerAlias
, о которой упоминал udo, чтобы один VirtualHost не мог все поймать. Попробуйте это:
<VirtualHost *:80>
ServerName domain1.com
ServerAlias *.domain1.com
VirtualDocumentRoot /var/www/domain1/%1/
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.com
ServerAlias *.domain2.com
VirtualDocumentRoot /var/www/domain2/%1/
</VirtualHost>