0

I would like to host using Apache2 and I need to know how I can have two different domains pointing to the same static IP but different websites, so for example I could have bill.com and bob.com. They are both hosted on the same server, same ports but are different websites, how could I go about doing this?

Edit: adding site specific etc/apache2/sites-available/ files:

the test.conf:

# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.

ServerName www.turingwebs.tk 
ServerAlias turingwebs.tk

ServerAdmin webmaster@turingwebs.co.uk
DocumentRoot /var/www/test/

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf

RewriteEngine on
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
vim: syntax=apache ts=4 sw=4 sts=4 sr noet

And now the actual one I am using:

# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.

ServerName turingweb.co.uk

ServerAdmin webmaster@turingweb.co.uk
DocumentRoot /var/www/html

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf

RewriteEngine on
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
vim: syntax=apache ts=4 sw=4 sts=4 sr noet
11
  • You have to add additional VirtualHost entries for each site, defining individual docroots, etc. – Thomas Ward Feb 3 '16 at 17:03
  • Yes i have that, but when i point domains to the same IP they both go to the same webpage – owski.phillips Feb 3 '16 at 17:45
  • Then please add your /etc/apache2/sites-available/000-default.conf and /etc/apache2/sites-available/bill.conf and /etc/apache2/sites-available/bob.conf and ... to your question. you did sudo a2ensite bob, right? See also here. – Doug Smythies Feb 3 '16 at 18:52
  • These were just an example - my real world .conf file looks like this, the .tk is for testing but the other one is real. – owski.phillips Feb 3 '16 at 18:54
  • You still need to wrap that stuff within <VirtualHost *:80> and </VirtualHost> tags. – Doug Smythies Feb 3 '16 at 20:03
3

Easy way:

First, copy your 000-default.conf file to two new .conf files:

sudo cp /etc/apache2/sites-available/000-default.conf site1.conf
sudo cp /etc/apache2/sites-available/000-default.conf site2.conf

Edit each of these files, changing the ServerName, ServerAlias and DocumentRoot directives according to which URLs should redirect to which directory.

Now, just enable the sites and reload them:

sudo a2ensite site1 site2
sudo service apache2 restart

Want proof that it's working? This is exactly what I did for my crazy cluster of sites. You can confirm with:

dig +short www.techyteen.tk
dig +short www.brownvpn.tk
dig +short www.browntech.tk
dig +short www.comic-cult.tk
dig +short www.nelida.tk

All domains point to the same IP, as seen by the output of dig. However, visit those pages in your browser, and you will see very different things. (However, don't criticize that last one. The guy really wanted to impress his girlfriend with it :P)

1
  • As you've never accepted an answer on this site before: If this answer helped you, don't forget to click the grey at the left of this text, which means Yes, this answer is valid! ;-) – Fabby Feb 4 '16 at 23:28

Not the answer you're looking for? Browse other questions tagged or ask your own question.