Jboss + mod_rewrite =?

3

Eu tenho 2 servidores, Apache e Jboss. O uso de arquivos .war do JKmount é montado e apresenta um site complexo.

por exemplo:

JkMount /directory/* ajp13
Alias /directory /jboss/server/default/deploy/directory.war
<Directory  /jboss/server/default/deploy/directory.war>
  Order allow,deny
  allow from all
  Options -Indexes
</Directory>
<Directory  /jboss/server/default/deploy/directory.war/WEB-INF>
  deny from all
</Directory>

Eu gostaria de usar mod_rewrite no lado do Apache para alterar as URLs retornadas por mod_jk.

por exemplo:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192.168.1.1$
RewriteRule /.* http://server.example/redirect.html [R=301,L]

Atualmente, o código acima afeta apenas as imagens retornadas pelo Apache e não as páginas retornadas por mod_jk.

Isso é possível? Como isso é feito?

Há uma pergunta semelhante feita em StackOverFlow no entanto dando uma escolha se é possível eu gostaria de lidar com isso interno para o Apache e não alterar a configuração do Jboss.

O servidor é OpenSuse 11.1 e eu suspeito que talvez haja alguns problemas de ordem de precedência de módulo, mas não consegui confirmar isso.

Exemplos de URLs seriam:

http://site.example/directory/index.jsp
http://site.example/foo/other.html

Neste exemplo, o primeiro URL é montado em mod_jk usando as diretivas listadas na configuração acima e NÃO seria reescrito por mod_rewrite. A segunda URL é um diretório normal no site do Apache e é reescrita corretamente.

Obrigado a todos

    
por Antitribu 20.10.2009 / 17:54

3 respostas

2

Após uma longa pesquisa, encontrei a resposta para esta.

A diretiva reescrita deve ser colocada globalmente para o host (virtual) não no ou no .htaccess. O Apache parece não analisar realmente esses arquivos, pois os arquivos servidos de mod_jk não fazem parte dessa estrutura; o que faz sentido se você pensar nisso. No entanto, aplicará as regras do mod_rewrite que se aplicam ao host inteiro.

    
por 28.10.2009 / 13:31
1

Desculpe, não posso comentar, eu sou novo aqui ... você pode dar um exemplo de URL que é retornado de mod_jk. Parece que a expressão regular não se ajusta à página retornada.

Tente redirecionar tudo para o link :

RewriteRule .* http://server.example/redirect.html [R=301,L]

Se isso funcionar, é a expressão regular, o que incomoda você.

Deixe-me explicar um pouco.

você tem um URI que se parece com: link

Sua expressão regular (/.*) agora está procurando por uma barra seguida por algo. Mas no Uri, não há / em "qualquer coisa".

Se você tem uma imagem: por exemplo,

link do que há / in images / image.png e a expressão regular corresponde e faz o redirecionamento .

Se você quiser redirecionar o somesite para outro servidor:

link - > link use

RewriteRule somesite.* http://server.example/redirect.html [R=301,L]
    
por 20.10.2009 / 18:04
0

Desculpe, não posso comentar, mas em resposta à sua resposta Antitribu, você também pode colocar as instruções reescritas em um contexto <Location> . Há uma seção do manual do apache que descreve quando usar o < File & gt ;, < Localização & gt ;, .htaccess, etc .

    
por 29.01.2010 / 01:21