Reverte dinamicamente uma subpasta para subdomínio no Apache

1

Eu gostaria de criar dinamicamente subpastas para sub-domínios em outro host. Por exemplo, tenho a seguinte configuração de proxy reverso para uma única subpasta no subdomínio:

ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass /app1/ http://app1.myotherserver.tld/
ProxyPassReverse /app1/ http://app1.myotherserver.tld/

O acima funciona bem (exceto pelo problema "/"). No entanto, eu preciso adicionar outros 10 como ele, app2, app3, app4, etc ... e talvez mais no futuro. Obviamente, não faz sentido adicionar cada um.

Usando a página em link como referência, estou fazendo isso:

RewriteRule ^/(.*)/$ http://$1.myotherserver.tld/ [P]
RewriteRule ^/(.*)/(.*)$ http://$1.myotherserver.tld/$2 [P]
ProxyPassReverse /$1/ http://$1.myotherserver.tld/

Isso funciona, mas minhas subpastas existentes são incluídas nessa regra, e ainda tenho o problema com o "/" final.

Eu tentei adicionar um "?" para a primeira regra, mas isso quebra tudo:

RewriteRule ^/(.*)?/$ http://$1.myotherserver.tld/ [P]

Como posso fazer algo como "http: // www.mywebserver.tld / app2" funcionar, mas ainda permitir que URLs válidos como essas ainda funcionem?

http://www.mywebserver.tld/style.css 
http://www.mywebserver.tld/images/title.png
http://www.mywebserver.tld/existingsubfolder
http://www.mywebserver.tld/existingsubfolder/page.php
    
por Tuaris 16.04.2014 / 03:06

1 resposta

1

Você desejará usar as condições de reescrita para verificar se os arquivos não existem antes do proxy.

Além disso, deve conseguir o comportamento desejado com apenas uma regra:

RewriteCond /path/to/docroot%{REQUEST_URI} !-f
RewriteCond /path/to/docroot%{REQUEST_URI} !-d
RewriteRule ^/[^/]*/(.*)$ http://$1.myotherserver.tld/ [P]

ProxyPassReverse /$1/ http://$1.myotherserver.tld/
    
por 16.04.2014 / 03:47