Parece que você está procurando por hosts virtuais dinâmicos. Existe um artigo muito bom na documentação do Apache sobre isso:
Hospedagem virtual em massa dinamicamente configurada
Existem várias maneiras de fazer isso, mas o mais flexível é provavelmente o mod_rewrite. Com base no seu exemplo, você pode usar a seguinte configuração de host virtual:
<VirtualHost *>
ServerName testdomain.com
ServerAlias *.testdomain.com
RewriteEngine on
RewriteMap lowercase int:tolower
# check the hostname is right so that the RewriteRule works
RewriteCond ${lowercase:%{SERVER_NAME}} ^[a-z0-9-]+\.testdomain\.com$
# concatenate the virtual host name onto the start of the URI
# the [C] means do the next rewrite on the result of this one
RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
# now create the real file name
RewriteRule ^([a-z0-9-]+)\.testdomain\.com/(.*) /var/www/vhost/testdomain.com/httpdocs/$1/$2
</VirtualHost>