Como você tem acesso à configuração do apache, aconselho usar vhosts separados; isso impede o loop em suas reescritas / redirecionamentos.
Você também deve escapar de qualquer caractere especial em um padrão correspondente. E ancore seus padrões corretamente!
<VirtualHost *:80>
ServerName www.example.com
ServerAlias sub.example.com
RewriteEngine on
#RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^/(.*) http://example.com/$1 [R]
RewriteCond %{HTTP_HOST} ^sub\.example\.com$
RewriteRule ^/(.*) http://example.com/asub/$1 [R]
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/htdocs
...
</VirtualHost>
O comentário é deliberado; dependendo se você quer www. ou sub. para ser correspondido por qualquer pedido não coberto aqui, comente o outro e será o padrão para qualquer coisa.exemplo.com.