Auto mapping development sites in Apache

Setting up a new virtual host entry in the Apache config files each time I setup a new development site on my local machine is a pain. Here’s how I am automatically mapping the http://*.dev hostnames to /home/user/dev/*/public in my home directory.
I normally have the files to be served by the webserver in a directory called /public. This allows other files to be stored together and optionally committed to my git repositories, with clear separation between what should and should not be served on the web. I started this following the Ruby-on-Rails conversion, but I am typically using this Apache setup for sites using PHP or static HTML (not for Rails apps).
This example is for Ubuntu Linux (14.10).
Create a new file called dev.conf with the following content (e.g. sudo vim /etc/apache2/sites-available/dev.conf):
# Set up permissions for VirtualHosts in /home/user/dev
<Directory "/home/user/dev">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
# Automatic VirtualHosts with .dev
# /home/user/dev/xxx/public can be accessed at http://xxx.dev
<VirtualHost *:80>
ServerName dev
ServerAlias *.dev
VirtualDocumentRoot /home/user/dev/%-2+/public
</VirtualHost>
Change /home/user/dev/ to the location of the sites to be served. The /public can also be removed if the files to be served are in the directory root, instead of the /public sub-directory.
Enable the Vhost Alias module in Apache:
sudo a2enmod vhost_alias sudo service apache2 restart
Enable the Apache dev site:
sudo a2ensite dev sudo service apache2 reload
Additionally, I am Dnsmasq to map all the *.dev domains to my local IP address, as per Dnsmasq (no editing /etc/hosts).
Now test out that it’s working.
Other information
The commands a2enmod, a2dismod, a2ensite, and a2dissite enable and disable the sites and modules used by Apache by creating, or removing, the symbolic links between the files in the *-available and *-enabled directories under /etc/apache2/.
Alternative instructions
Here’s how to do something similar on Mac: Local Development Environment: Apache, PHP, and MySQL with Homebrew