Virtual host for subdomain overriding default virtual host

Solution 1:

Your problem is here:

<VirtualHost subdomain>

Don't do that, since it's giving that vhost priority over the existing one for whichever IP that resolved to. It should be <VirtualHost *:80> matching your existing vhost. The ServerName directive is where the 'name' of the vhost should go.

You also need a NameVirtualHost *:80 somewhere, if you don't already have that.