Seu host virtual domain.com apenas especifica www.example.com
como nome, portanto, o Apache só corresponderá quando www
for especificado.
ServerName www.example.com
Você provavelmente deseja usar a seguinte configuração:
ServerName example.com
ServerAlias www.example.com
Edit: Eu estou supondo, no seu caso, que o Apache tenta corresponder seus hosts virtuais em uma ordem similar à seguinte:
www.example.com > default > example.com (80) > example.com (443)
Como o host default
corresponde a todas as solicitações enviadas na porta 80, os outros dois nunca seriam testados. Isso também explica por que a remoção do padrão faz com que sua configuração funcione corretamente.
Eu não estou muito familiarizado com a correspondência de host virtual do Apache, mas você pode encontrar mais informações sobre isso em este página .