Because I like to play with a lot of projects and code, I create subdomains for oprsteny.cz for almost every project. Instead of going through the hassle of creating a CNAME or A record for every subdomain, creating an Apache vhost file and enabling it and creating the necessary directory structure, I figured there’s an easier way to do so.
First thing I had to do was to create an *.oprsteny.cz wildcard record for my domain. This way, I don’t need to create a DNS record every time I need a new subdomain. When this is done, I checked for the record for example using dig, and I saw something like this:
$ dig *.oprsteny.cz # .. skipping some output ;; ANSWER SECTION: *.oprsteny.cz. 3600 IN A 192.0.32.10
Once that’s done and it’s pointing to my server, I need to create an Apache vhost which handles the requests with mod_rewrite, which is a rules-based url rewriting module for apache, and can easily handle different subdomains and actions based on the subdomain.
I was replacing the domain name, IP address and paths with my own, and I had a directory structure like this:
/var/www/oprsteny.cz/ /var/www/oprsteny.cz/www/ /var/www/oprsteny.cz/subdomains/ /var/www/oprsteny.cz/subdomains/<any subdomain>/
Apache vhost (stripped version):
<VirtualHost *:80>
ServerName oprsteny.cz
ServerAlias *.oprsteny.cz
DocumentRoot "/var/www/oprsteny.cz"
RewriteEngine on
# Rewrite everything for oprsteny.cz to the
# /www/ subdirectory
RewriteCond %{HTTP_HOST} ^oprsteny\.com
RewriteRule ^(.*) /www/$1 [L]
# Rewrite all other *.oprsteny.cz subdomains
# to their own directory
RewriteCond %{HTTP_HOST} ^([^\.]+)\.oprsteny\.com
RewriteCond /var/www/oprsteny.cz/subdomains/%1 -d
RewriteRule ^(.*) /subdomains/%1/$1 [L]
</VirtualHost>
This way, you can just create a directory like/var/www/oprsteny.cz/subdomains/blog/ to make http://blog.oprsteny.cz work. Easy like that!

Exrtemely helpful article, please write more.