Name-based virtual hosts for the best-matching set of <virtualhost>
s are processed in the order they appear in the configuration. The first matching ServerName or ServerAlias is used, with no different precedence for wildcards (nor for ServerName vs. ServerAlias).
source: Servidor HTTP Apache Versão 2.4 - Usando hosts virtuais baseados em nome
Afaik não é possível alterar este processo de classificação sem recompilar.
Para mudar a ordem dos seus hosts virtuais, você poderia renomear os arquivos * .conf em /etc/apache/sites-available/
assim:
/etc/apache/sites-available/000-default.conf
/etc/apache/sites-available/100-site-one.conf
/etc/apache/sites-available/200-site-two.conf
Para o Debian (o Ubuntu deve ter uma sintaxe similar), eu recomendo mudar de digamos old-site-three.conf
para 300-site-three.conf
nesta ordem:
$ sudo a2dissite old-site-three.conf
$ sudo mv /etc/apache/sites-available/old-site-three.conf /etc/apache/sites-available/300-site-three.conf
$ sudo a2ensite 300-site-three.conf
$ sudo apache2ctl configtest
$ sudo systemctl restart apache2.service