O que você precisa é um alias, não vhost. Virtualhosts trabalha com nomes de host, não hostname + diretório.
<VirtualHost *:80>
DocumentRoot "C:\Projects\MyProject\public_html"
ServerName "www.myDomain.com"
Alias /somedir/myproject "C:\Projects\MyProject\public_html"
</VirtualHost>
Editar:
O problema do OP parece ser um pouco diferente, e sua solução é enviar tudo o que não é um arquivo físico real para o index.php, usando um RewriteRule no arquivo .htaccess. Isso funciona, mas colocá-los em seu httpd.conf (ou um deles, se ele estiver incluído) é mais eficiente.
Existe uma maneira de você mover facilmente o RewriteRules de .htaccess para o httpd.conf sem precisar alterá-los: Use contêineres.
Então, se você tem um .htaccess em, por exemplo, / var / www / myproject, você pode mover para o httpd.conf desta forma.
<Directory /var/www/myproject>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php [NC,L]
</directory>
A vantagem em colocar as regras em arquivos .htaccess é que um arquivo .htaccess é lido para cada solicitação. Então é melhor não ter nada. Você pode mover o RewriteRule para fora de seu contexto de diretório (para evitar um redirecionamento interno em cada correspondência). Mas você teria que modificar o padrão, pois em um contexto de servidor é o URL inteiro com o qual você está correspondendo, não apenas a parte depois do diretório.