Eu posso lhe dar três maneiras de fazer isso.
1 Usando hosts virtuais
Dado que bacon.com é um ServerAlias para example.com, ou seja, ambos estão no mesmo servidor, você pode fazer isso sem usar mod_rewrite. Pense desta maneira: mod_rewrite é a maneira mais básica de mapear URLs para um sistema de arquivos. Então, o que eu faria seria simplesmente configurar um VirtualHost separado que usasse o diretório correto como base.
Aqui está um breve exemplo:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName example.com
DocumentRoot /www/files
[... all other config you have for example.com]
</VirtualHost>
<VirtualHost *:80>
ServerName bacon.com
DocumentRoot /www/files/bacon
# To have CSS directly under /www/files/css instead of /www/files/bacon/css
Alias /css /www/files/css
[... all other config you have for bacon.com]
</VirtualHost>
Como você vê, isso não é uma reescrita; em vez disso, você está configurando o bacon.com para usar o diretório base de example.com/bacon como seu próprio DocumentRoot.
2 Usando mod_rewrite como proxy
Se você quiser usar o mod_rewrite, você pode usar o flag P que fará o mod_rewrite funcionar como um proxy. Aqui está um exemplo:
RewriteRule /(.*) http://example.com/bacon/$1 [P]
Editar em resposta ao comentário:
Como você deseja que o link seja link em vez de link , crie uma regra separada que seja a primeira e capture o URL específico:
RewriteRule /css/(.*) http://example.com/css/$1 [P]
RewriteRule /(.*) http://example.com/bacon/$1 [P]
Para fazer isso, você precisa ter o mod_proxy carregado e ativado. Entretanto, observe que isso reduzirá o desempenho em comparação ao uso do mod_proxy diretamente, pois ele não manipula conexões persistentes ou o conjunto de conexões. Então, se você não pode fazer o que quiser com o VirtualHosts, sugiro o terceiro método:
3 Usando mod_proxy diretamente
<VirtualHost *:80>
ServerName bacon.com
ProxyPass http://example.com/bacon
ProxyPassReverse http://example.com/bacon
</VirtualHost>
Para mais informações, consulte a documentação do mod_proxy