Espero ter entendido corretamente:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.]+).domain.com$ [NC]
RewriteCond %{REQUEST_URI} !%1
RewriteRule ^(.*)$ /%1/$1 [L]
Estou tentando criar um pega-tudo para todos os subdomínios (não capturados por regras de reescrita anteriores) de um determinado domínio e veicular um site a partir de um subdiretório que reside na mesma pasta que o arquivo .htaccess. Eu já tenho meu vhosts.conf para enviar todos os pedidos não mapeados para uma pasta "playground", onde eu quero criar facilmente novos subdomínios, simplesmente adicionando uma subpasta.
Então, minha estrutura é assim:
/var/www/playground
|-> /foo
|-> /bar
Os .htacces que vivem dentro da pasta / playground e / foo e / bar são sites separados. Eu quero que http://foo.domain.com
aponte para / foo e http://bar.domain.com
para / bar.
Aqui está o meu arquivo .htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.]+).domain.com$ [NC]
RewriteCond %{REQUEST_URI} !^/%1/(.*)
RewriteRule ^(.*) /%1/$1 [L]
Isso deve capturar o subdomínio, incluí-lo como uma subpasta em RewriteRule e, em seguida, acrescentar após as informações de barra e caminho. O segundo RewriteCond está lá para evitar um loop infinito. Minha idéia era que% 1 no segundo RewriteCond seria capaz de capturar o grupo de captura no primeiro RewriteCond. Mas até agora eu não tive nenhum sucesso, está sempre terminando em um loop de redirecionamento. Se eu substituir% 1 no segundo RewriteCond com 'foo' ou 'bar' codificado, ele funciona, o que me leva a acreditar que você não pode se referir a um grupo de captura dentro de um RewriteCond. É verdade? Ou estou faltando alguma coisa?
Espero ter entendido corretamente:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.]+).domain.com$ [NC]
RewriteCond %{REQUEST_URI} !%1
RewriteRule ^(.*)$ /%1/$1 [L]