Apache VirtualHost and localhost Apache VirtualHost and localhost apache apache

Apache VirtualHost and localhost


This worked for me!

To run projects like http://localhost/projectName

<VirtualHost localhost:80>   ServerAdmin localhost    DocumentRoot path/to/htdocs/    ServerName localhost</VirtualHost>

To run projects like http://somewebsite.com locally

<VirtualHost somewebsite.com:80>     ServerAdmin webmaster@example.com     DocumentRoot /path/to/htdocs/somewebsiteFolder     ServerName www.somewebsite.com     ServerAlias somewebsite.com</VirtualHost>

Same for other websites

<VirtualHost anothersite.local:80>     ServerAdmin webmaster@example.com     DocumentRoot /path/to/htdocs/anotherSiteFolder     ServerName www.anothersite.local     ServerAlias anothersite.com</VirtualHost>


localhost will always redirect to 127.0.0.1. You can trick this by naming your other VirtualHost to other local loop-back address, such as 127.0.0.2. Make sure you also change the corresponding hosts file to implement this.

For example, my httpd-vhosts.conf looks like this:

<VirtualHost 127.0.0.2:80>    DocumentRoot "D:/6. App Data/XAMPP Shared/htdocs/intranet"    ServerName intranet.dev    ServerAlias www.intranet.dev    ErrorLog "logs/intranet.dev-error.log"    CustomLog "logs/intranet.dec-access.log" combined    <Directory "D:/6. App Data/XAMPP Shared/htdocs/intranet">        Options Indexes FollowSymLinks ExecCGI Includes        Order allow,deny        Allow from all        AllowOverride All        Require all granted    </Directory></VirtualHost>

(Notice that in <VirtualHost> section I typed 127.0.0.2:80. It means that this block of VirtualHost will only affects requests to IP address 127.0.0.2 port 80, which is the default port for HTTP.

To route the name intranet.dev properly, my hosts entry line is like this:

127.0.0.2 intranet.dev

This way, it will prevent you from creating another VirtualHost block for localhost, which is unnecessary.


This is normal if you see it. Since it is the first virtual host entry, it will show local host.

Let’s say for example you didn't want that page to show. All you want to show is the "Apache, it works" page, so you would make a vhost entry before mysite.local as local host and point it to the "it works" page.

But this is normal. I had this problem before, so don't worry!