mod_rewrite: Use backreference de RewriteCond como CondPattern em outra RewriteRule

2

Eu tento usar a primeira parte do fqdn como um alvo de reescrita:

link = > link

RewriteCond %{HTTP_HOST} ^([a-z0-9-]+).dev.example.com [NC]
RewriteRule ^/(.*) http://%1.dev.example.com/%1/$1 [P]

Isso cria um loop infinito. Então, preciso de outra condição que verifique se essa solicitação já foi reescrita ou não:

RewriteCond %{REQUEST_URI} !^/%1

Bem, isso não está funcionando, a documentação não diz nada sobre o uso de backreferences em CondPatterns, o que possivelmente não é suportado.

RewriteCond %{REQUEST_URI} !^/demo

Isso funciona perfeitamente, mas não é dinâmico.

    
por turingmachine 11.08.2010 / 10:57

2 respostas

2

Solução / solução alternativa: reserve uma parte de nome de host para solicitações internas:

RewriteCond %{HTTP_HOST} !^internal.dev.atizo.org [NC]
RewriteCond %{HTTP_HOST} ^([0-9a-z-]+).dev.atizo.org [NC]
RewriteRule ^/(.*) http://internal.dev.atizo.org/%1/$1 [P]
    
por 11.08.2010 / 14:35
-2

Se você não precisar processar nenhuma regra após a reescrita, basta adicionar a opção "L"="last" entre os colchetes:

RewriteRule ^/(.*) http://%1.dev.example.com/%1/$1 [P,L]

    
por 11.08.2010 / 11:15