Adding a subdomain on apache2

February 2, 2015 5.5k views

Hello. I'm trying to add a subdomain to my website which is running on ubuntu 14.04

I got a domain: example.com and I want to add a subdomain: recipes.example.com.

I have the following folders:
/var/www/example.com and /var/www/recipes.example.com. Up until now I had the main domain folder only and everything worked just as expected.

In /etc/apache2/sites-available I got my example.com.conf as well as recipes.example.com.conf

here is my recipes.example.com.conf:

<VirtualHost *:80>

        ServerAdmin me@example.com
        #referring the user to the recipes application
        DocumentRoot /var/www/recipes.example.com/public

        <Directory /var/www/recipes.example.com/public>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/

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


I've added a CNAME entry for my domain:

CNAME: name: recipes, host: @

However, up at this point, when I access recipes.example.com I get see my actual website, which means that apache has loaded the main website's folder instead of the subdomain folder.

What am I doing wrong?

1 comment
2 Answers

It looks like your virtualhost configuration is missing a ServerName. In name based virtual hosting this field is key and is what apache uses to decide which site to display. You'll want to add the following line:

ServerName recipes.example.com

To the main section of this configuration right before or after your ServerAdmin directive.

  • Briliant, thanks a lot. I have no idea how come I missed such an important setting.

thanks for the author of this question
Its help me a lot :D

Have another answer? Share your knowledge.