Como obtenho url reescreve para trabalhar no Apache 2.2 no Debian Lenny

2

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)

    
por user13146 30.06.2010 / 07:34

4 respostas

1

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.

    
por 30.06.2010 / 08:27
1

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.

    
por 30.06.2010 / 11:13
1

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.

    
por 23.01.2012 / 20:46
0

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.

    
por 01.07.2010 / 16:06