RewriteBase /
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
O código acima examina o host HTTP do navegador de conexão. Observe que o .htaccess só pode funcionar em um pedido que possa alcançar o servidor da web. Isso funcionará para forum.example.com , mas somente se forum.example.com realmente carregar o conteúdo no diretório em que o arquivo .htaccess reside. Se você não tiver os registros DNS configurados (por exemplo, um registro * A ou um registro de forum A) então ele nem mesmo irá para o site, porque o DNS é inválido. Além disso, o Apache deve ser configurado para carregar o site para esse VirtualHost. Portanto, ele deve estar listado na configuração do Apache antes que o .htaccess possa encaminhar a URL conforme especificado.
Para sua segunda pergunta, no RewriteRule part ^(.*)$ , isso corresponde apenas ao arquivo que é acessado fora do servidor. A parte RewriteCond aplica apenas a regra em certos nomes de host, então ^(.*)$ especifica que qualquer solicitação siga as regras de reconfiguração.
Portanto, o código .htaccess acima será aplicado a todas as solicitações após o / , se o host não for igual a example.com .
Deixe-me saber se você precisar de mais explicações.