Вы можете сделать это с помощью одного VirtualHost для всех поддоменов:
<VirtualHost *:80>
ServerName category.domain.com
ServerAlias foo.domain.com bar.domain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} (.*).domain.com
RewriteRule (.*) http://domain.com/%1$1 [R=301,QSA,L]
</VirtualHost>
Для того, чтобы он работал правильно, у вас должно быть что-то, заданное как ServerName, так что просто выберите один и перечислите остальные своисубдомены в строке ServerAlias.
Вы можете иметь несколько строк ServerAlias, поэтому вы можете разбить их на несколько строк для удобства чтения, если у вас большое количество поддоменов.
В RewriteRule% 1 соответствует первому сопоставленному шаблонув предыдущих строках RewriteCond.