Dynamic Vhosts in Apache 2.4 after upgrading to OSX Yosemite

Dynamic Vhosts for single and multipart domains

Posted on October 18, 2014

Tags:

Apache

Upgrading to OSX Yosemite upgrades Apache to 2.4 which caused me a few issues with my dynamic host file. Here’s my updated vhost file which works for both single and multi-part domains.

Single part domains

My local development urls all end in .dev e.g. marclloyd.dev. The vhost below will forward marclloyd.dev to the folder /Library/WebServer/Projects/marclloyd. This will work for all domains ending in .dev .

<Virtualhost *:80>
    VirtualDocumentRoot "/Library/WebServer/Projects/%1"
    ServerName vhosts.dev
    ServerAlias *.dev
    UseCanonicalName Off
    <Directory "/Library/WebServer/Projects/*">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</Virtualhost>

Multipart Domains

In my full time role as lead developer we use multi-part domains for local development e.g. the url for working on this site locally would something like marclloyd.website.marc.thecompany.co.uk. The code below will forward all domains ending with .marc.thecompany.co.uk to a folder named using the first 2 parts of the domain. e.g. marclloyd.website.marc.thecompany.co.uk will forward to /Library/WebServer/Projects/marclloyd.website

<Virtualhost *:80>
    VirtualDocumentRoot "/Library/WebServer/Projects/%1.0.%2.0
    ServerName vhosts.marc.thecompany.co.uk
    ServerAlias *.marc.thecompany.co.uk
    UseCanonicalName Off
    <Directory "/Library/WebServer/Projects/*">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</Virtualhost>

Here’s my full httpd-vhosts.conf file:

Listen 80

<VirtualHost *:80>
    DocumentRoot "/Library/WebServer/Projects"
    ServerName localhost 
</VirtualHost>

<Virtualhost *:80>
    VirtualDocumentRoot "/Library/WebServer/Projects/%1.0.%2.0
    ServerName vhosts.marc.thecompany.co.uk
    ServerAlias *.marc.thecompany.co.uk
    UseCanonicalName Off
    <Directory "/Library/WebServer/Projects/*">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</Virtualhost>

<Virtualhost *:80>
    VirtualDocumentRoot "/Library/WebServer/Projects/%1"
    ServerName vhosts.dev
    ServerAlias *.dev
    UseCanonicalName Off
    <Directory "/Library/WebServer/Projects/*">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</Virtualhost>