As I was working on one of my SaaS services that provides access to free Staging WordPress sites I stumbled on a problem. There are hundreds of sites on that server which are saved in semi random locations. I really needed to find where the virtual host configuration file is for a given site.

Here's video explanation:

Depending on your set up you can have one big apache vhost file that contains all the virtual host definitions and/or also have files for each site that your website server is serving.

To show all the sites that Apache serves run the following command as root.

apachectl -S

The list could be quite long so you can use less command to see the information page per page

apachectl -S | less

Now, if you want to list the location of the virtual host file for a site of yours run this command

apachectl -S | grep -i 'example.com'

To list information about the default virtual host

apachectl -S | grep -i 'default'

The output should look like this:

....
default server localhost (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost localhost (/etc/apache2/sites-enabled/000-default.conf:1)
default server localhost (/etc/apache2/sites-enabled/000-default.conf:32)
port 443 namevhost localhost (/etc/apache2/sites-enabled/000-default.conf:32)
...

The thing in the parenthesis is the location of the virtual host file.
e.g. /etc/apache2/sites-enabled/000-default.conf

 

Related

How to List All Virtual Hosts in Apache Web Server