Como faço para encaminhar solicitações para outra URL sem realmente alterar a URL no Apache?

0

Eu tenho o Apache em execução em um domínio, por exemplo http://example.com . Eu também tenho o Tomcat em execução no meu servidor e enviei todas as solicitações feitas para http://example.com/t/ para o Tomcat e todas as outras URLs são atendidas pelo Apache diretamente.

Meu problema é que tenho um URL como http://example.com/bar , mas ele deve apontar para http://example.com/t/bar .

Em outras palavras, o URL deve ser processado pelo Tomcat, que obtém a "barra" de contexto do aplicativo.

O problema é que não sei bem como fazer a regra de reescrita apropriada para isso. Eu tentei adicionar isso aos sites disponíveis / padrão

RewriteEngine on
RewriteRule ^/bar(.*) /t/bar$1 [R]

Mas isso não preserva o URL e, em vez disso, apenas redireciona para o URL do Tomcat com o prefixo /t/ . Se eu remover o [R] , acabei de receber um 404.

Qual é o RewriteRule adequado para resolver meu problema?

    
por Kim L 02.10.2009 / 12:54

1 resposta

3

Você deve usar a opção 'P' (proxy) na regra mod_rewrite para ser feita internamente no servidor. Você também precisará ativar o mod_proxy .

dos documentos do mod_rewrite :

'proxy|P' (force proxy)

This flag forces the substitution part to be internally sent as a proxy request and immediately (rewrite processing stops here) put through the proxy module. You must make sure that the substitution string is a valid URI (typically starting with http://hostname) which can be handled by the Apache proxy module. If not, you will get an error from the proxy module. Use this flag to achieve a more powerful implementation of the ProxyPass directive, to map remote content into the namespace of the local server.

Note: mod_proxy must be enabled in order to use this flag.

    
por 02.10.2009 / 13:30