apachevirtualhostvirtual-hosts

Different VirtualHosts with the same port


I need to have two VirtualHosts with the same listen port for different projects and with different logs. Here's what I've got:

<VirtualHost *:80>
        DocumentRoot /home/projects/smk
        ErrorLog /var/log/apache2/smk-error.log
        RedirectMatch ^/$ /cms
</VirtualHost>

<VirtualHost *:80>
        DocumentRoot /home/projects/smk/cms
        ErrorLog /var/log/apache2/smk-cms-error.log
</VirtualHost>

<VirtualHost *:80>
        DocumentRoot /home/projects/smk/deploy
        ErrorLog /var/log/apache2/smk-deploy-error.log
</VirtualHost>

Solution

  • Add different ServerName directive in all virtual hosts:

    <VirtualHost *:80>
            ServerName dev.localhost
            DocumentRoot /home/projects/smk/cms
            ErrorLog /var/log/apache2/smk-cms-error.log
    </VirtualHost>
    
    <VirtualHost *:80>
            ServerName my-project.localhost
            DocumentRoot /home/projects/smk/deploy
            ErrorLog /var/log/apache2/smk-deploy-error.log
    </VirtualHost>
    

    Don't forget to add host-entries for dev.localhost and my-project.localhost in /etc/hosts to 127.0.0.1 or whatever ip you want it to point to.