[EDITAR] Como testei a solução. Agora funciona como um sonho, conforme detalhado abaixo. Eu fiz um deslize bobo no meu regex que agora está corrigido.
A idéia é usar o RewriteCond para capturar o fqdn no pedido e dividi-lo. O regex captura a parte mais à esquerda do nome de domínio que é então backreferenced no RewriteRule usando% 1. Eu também escape do diretório 'public' da tradução, o que o torna acessível usando um caminho URI comum a todos os fqdn: s mapeados para o site (veja o resultado do teste para exemplo concreto).
- Desativei o arquivo de hosts virtuais para o propósito desta experiência.
- Meus pontos de DNS client1.multisite.dev e client2.multisite.dev no meu servidor de teste do Apache 2.2.
- O snippet a seguir está no meu httpd.conf.
.
RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond %{REQUEST_URI} !^/public/
RewriteCond ${lowercase:%{HTTP_HOST}} ^([^.]+)\.multisite\.dev$
RewriteRule ^/(.*) /myApache/runtime/docs/www/multisite/%1/$1
Eu criei essa estrutura de diretórios.
/myApache/runtime/docs/www/multisite/client1/uploads
/myApache/runtime/docs/www/multisite/client2/uploads
/myApache/runtime/docs/www/multisite/public
Cada dir tem um arquivo separado chamado index.htm. O conteúdo index.htm revela o caminho do diretório onde ele é colocado.
Navegue até link OU link dá este resultado:
Hi!
Served from /myApache/runtime/docs/www/multisite/public/index.htm
See you!
Navegar para link dá o seguinte resultado:
Hi!
Served from /myApache/runtime/docs/www/multisite/client1/uploads/index.htm
See you!
Navegar para link dá esse resultado:
Hi!
Served from /myApache/runtime/docs/www/multisite/client2/uploads/index.htm
See you!
Também testei casos de mistura ao inserir o URL no meu navegador da web. Tudo é traduzido para minúsculas.
Noto que você está executando o Apache no Windows, cujos sistemas de arquivos nativos não diferenciam maiúsculas de minúsculas. A normalização do caso não seria, portanto, um requisito, embora eu pessoalmente ache que o URL em letras minúsculas é mais esteticamente agradável de se olhar no meu navegador. Em sistemas de arquivos que fazem distinção entre maiúsculas e minúsculas seria um requisito, portanto, incluo-os para conclusão.
Por fim, observei também que executar o Apache em uma porta diferente de 80 (ou seja, ter que soletrar na URL) quebra a referência anterior de RewriteRule. Eu não busquei uma solução para isso, no entanto.
Espero que isso seja igual ou próximo o suficiente para o que você precisa.