Noto que, em sua regra de regravação, o padrão para correspondência termina com uma barra, mas o URL que você acessou não foi. Tente remover a barra de http-poll/
no RewriteRule
e veja se isso faz com que funcione.
Estou tentando fazer com que as regras do mod_rewrite funcionem sob o apache 2.2 no Debian Lenny. Para tentar fazê-lo funcionar primeiro eu coloquei as regras em /etc/apache2/mods-enabled/rewrite.load:
RewriteEngine On
RewriteRule http-poll/ http://jabberserver:5280/http-poll [P]
RewriteLog "/tmp/rewrite.log"
RewriteLogLevel 3
No entanto, recebo um erro 404 quando uso um navegador para acessar o link depois de reiniciar o apache. Error.log tem:
[Wed Jun 30 15:22:53 2010] [error] [client 127.0.0.1] File does not exist: /var/www/http-poll
"/ tmp / rewrite.log" está vazio.
Eu tenho módulos habilitados (incluindo mod_rewrite) (a2enmod reescrever proxy_http proxy)
Noto que, em sua regra de regravação, o padrão para correspondência termina com uma barra, mas o URL que você acessou não foi. Tente remover a barra de http-poll/
no RewriteRule
e veja se isso faz com que funcione.
Acho que você precisa especificar o caminho absoluto e garantir que o padrão esteja no início do caminho local:
RewriteRule ^/http-poll/ http://jabberserver:5280/http-poll/ [P]
caso contrário, a regra de reescrita será aplicada novamente se o mesmo arquivo conf do Apache interpretar o proxy.
Além disso, se você quiser redirecionar os URLs em / http-poll /, deverá especificar as substituições de expressões regulares:
RewriteRule ^/http-poll/(.*) http://jabberserver:5280/http-poll/$1 [P]
E, sim, isso é definitivamente uma falha de servidor qn.
Nenhuma das outras respostas explicou por que o seu registro de reescrita está vazio.
Aqui está o meu palpite: a menos que você tenha incluído a diretiva "RewriteOptions Inherit", as diretivas de reescrita globais não serão herdadas pelas diretivas do VirtualHost (o que é inconsistente com o funcionamento de muitas outras configurações do Apache).
Além de ativar a opção de herança, você pode repetir as diretivas Rewrite relacionadas no host virtual que está testando.
A sugestão em outro lugar para verificar sua linha "LoadModule" não está relacionada. Se isso estivesse faltando, sua configuração provavelmente seria quebrada e você receberia um erro como este:
"Comando inválido 'RewriteEngine', talvez escrito incorretamente ou definido por um módulo não incluído na configuração do servidor"
A exceção seria se você empacotasse todas as suas diretivas Rewrite em blocos "IfModule", para que eles simplesmente desaparecessem quando o módulo estivesse faltando.
O mod_rewrite.load não deveria conter apenas uma linha como essa?
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
De qualquer forma, funciona para mim se eu colocar as regras de reescrita em uma configuração de servidor ( <VirtualHost>
), mas não se elas estiverem no mod_rewrite.load (Ubuntu 8.04, Apache 2.2.8). Se você não usa hosts virtuais, tente colocá-los na seção <Directory>
da raiz do documento.