Uma boa maneira de descobrir o que o apache acha que está fazendo é executar
apachectl -S
Isso lhe dirá todos os hosts virtuais configurados e onde eles estão definidos. Talvez isso ajude a rastrear seu problema?
De acordo com os documentos link que fiz seguindo, e é quase como faço sempre em meu Fedora, mas o Ubuntu parece não funcionar.
a) DNS para IP
$ echo "127.0.0.1 a" > /etc/hosts
$ echo "127.0.0.1 b" > /etc/hosts
b) Apache virtualhost
$ ls
1 2 default default.backup default-ssl
$ cat 1
<VirtualHost *:80>
ServerName a
ServerAlias a
DocumentRoot /var/www/html/a/public
<Directory /var/www/html/a/public>
#AddDefaultCharset utf-8
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
$ cat 2
<VirtualHost *:80>
ServerName b
ServerAlias b
DocumentRoot /var/www/html/b/public
<Directory /var/www/html/b/public>
#AddDefaultCharset utf-8
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
c) carregue no Apache e reinicie o serviço
$ a2ensite 1
$ a2ensite 2
$ a2dissite default
$ a2enmod rewrite
$ /etc/init.d/apache2 restart
d) Navegue pelos novos 2 hosts
$ firefox http://a
Não funciona, vai sempre com http://a
ou http://b
a /var/www/html
Como posso corrigi-lo para que ele vá para o próprio diretório, por exemplo: http://a
vai para /var/www/html/a/public
não /var/www/html
?