How to setup a Virtual Host in Apache

If you haven’t done this before it’s easier than you think, in fact only 3 steps are required.

Locate the httpd.conf file

This is usually found in


Open it up in your preferred editor, and search for ‘Virtual Hosts’, this should take you to a section near the end of the file that looks like this:

### Section 3: Virtual Hosts

Enable name-based virtual hosts

This is as simple as adding or uncommenting the line

NameVirtualHost *:80

Setup the first catch-all host

Request to your server will use these details by default if they can’t match any configured setting, eg, if you request and foo hasn’t been setup.

The first virtual host stanza looks like this, following with our example of a local setup:

<VirtualHost *:80>
ServerName      localhost
DocumentRoot    /var/www/html

If your local machine’s hostname is ‘foobar’, replace localhost with ‘foobar’.

Setup your virtual host

Not very different from above, with one exception:

<VirtualHost *:80>
ServerName my_host
DocumentRoot    /var/www/html/my_site
DirectoryIndex  index.php

The exception being that whatever name you give your virtual host, this name must also appear in your hosts file. Open it now:

$ vi /etc/hosts

For our above example, on a local machine, your file should look like this::       localhost.localdomain   localhost       my_host

Note that the DocumentRoot directive points to the webroot of the website you want to serve. In the case of Seagull it will be something like:


You can of course add many other directives in the virtual host container, for more info see the list of available directives or some examples.


For starters, don’t forget to restart your webserver so the new configuration in httpd.conf can be read in. Also ensure all files can be read by the webserver, occasionally you can have a situation where apache can’t find the files you’ve specified, or read them, and it will fail to restart.