Question

I have defined two VirtualHosts on Apache, and the problem is, one of them overrides the other one. i.e. when I try to reach the second address, the first one shows up.

Here is my first config:

ServerName www.example1.com
DocumentRoot /server/sites/example1

<VirtualHost *:80>
    ServerAdmin admin@example1.com
    DocumentRoot /server/sites/example1
    ServerAlias example1.com
    <Directory /server/sites/example1/>
      AllowOverride All 
      Order allow,deny
      Allow from all
    </Directory>
</VirtualHost>

And the second:

ServerName www.example2.tv
DocumentRoot /server/sites/tv/public/

<VirtualHost *:80>
  ServerAdmin admin@example2.tv
  DocumentRoot /server/sites/tv/public    
  <Directory /srver/sites/tv/public>
     # This relaxes Apache security settings.
     AllowOverride all 
     # MultiViews must be turned off.
     Options -MultiViews
  </Directory>
</VirtualHost>

When I load www.example2.tv, it still shows www.example1.com content.

example1 is written in PHP and example2 is Ruby on Rails.

Was it helpful?

Solution

You need to have the ServerName directive inside the VirtualHost configuration i.e.:

<VirtualHost *:80>
  ServerName www.example2.tv
  ServerAdmin admin@example2.tv
  DocumentRoot /server/sites/tv/public    
  <Directory /server/sites/tv/public>
     # This relaxes Apache security settings.
     AllowOverride all 
     # MultiViews must be turned off.
     Options -MultiViews
  </Directory>
</VirtualHost>

You can examine your configured VirtualHosts using apachectl -S - this will print a list of all the configured VirtualHosts and their corresponding config files

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top