Хорошо, это старый вопрос, но так как я нашел его в Google, другие тоже могут оказаться здесь, и почему бы не дать этим будущим посетителям иное решение проблемы? (хотя технически это не ответ на вопрос ОП, поскольку вы попросили переадресацию, но я думаю, что это решит вашу проблему)
В зависимости от того, что вы хотите, вы можете:
1) Попросите все для домена перейти в один каталог: example.com www.example.com foo.example.com все перейдите в /var/www/example.com/app/www
<VirtualHost *:80>
ServerName catch.all
ServerAlias *
VirtualDocumentRoot /var/www/%-2.0.%-1.0/app/www
</VirtualHost>
2) Иметь структуру каталогов, например /var /www /[domain] /[subdomain]. И example.com, и www.example.com идут по адресу /var/www/example.com/www, и shop.example.com будет обслуживаться. из /var/www/example.com/shop
<VirtualHost *:80>
ServerName sub.domain
ServerAlias *.*.*
VirtualDocumentRoot /var/www/%-2.0.%-1.0/%-3
</VirtualHost>
<VirtualHost *:80>
ServerName bare.domain
ServerAlias *.*
VirtualDocumentRoot /var/www/%-2.0.%-1.0/www
</VirtualHost>
Примечание: www будет обслуживаться правилом sub.domain. А несуществующие субдомены приведут к 404.