Como o Apache processa um caminho com uma URL codificada por porcentagem?

1

Eu encontrei um caso inesperado de Apache me dando um erro 404 em vez de deixar o mod_rewrite lidar com o caminho, quando uma das partes do caminho codificado por porcentagem era uma URL HTTP.

por exemplo. "GET / myfolder / http% 3A% 2F% 2Flocalhost% 2Fnotificar HTTP / 1.0"

Eu tenho uma regra extremamente simples no arquivo /myfolder/.htaccess que envia tudo que não é um arquivo em / myfolder / para um script. Ele funciona bem com outros valores com codificação percentual, mas, nesse caso, o Apache nunca processa o RewriteRule a partir do arquivo .htaccess. Eu posso codificar duplamente o valor como uma solução alternativa, mas parece que o Apache ainda deve processar as fases do mod_rewrite. Eu pretendo que a URL seja meramente um parâmetro de entrada para o script.

Aqui estão as (ir) diretivas mod_rewrite relevantes em /myfolder/.htaccess:

RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule .* ./script-the-world.php

As regras de reescrita NÃO estão sendo processadas. Na configuração do servidor eu tenho RewriteLogLevel 5, etc., e tail -f /var/log/http/rewrite.log mostra todos os meus pedidos para / myfolder / sendo reescrito ... exceto para o mencionado acima. Quero dizer que algo interno está acontecendo no caso especial acima, mas não tenho ideia do que é. Espero que alguém saiba de outro módulo que está interferindo no que estou tentando realizar.

Este é o Apache 2.2.16.

    
por ruquay 18.04.2011 / 18:29

1 resposta

2

Você precisará ativar AllowEncodedSlashes , o que fará com que o Apache permita URLs com% 2F e% 5C neles, em vez de lançar um 404. Você ainda, é claro, tem que ter certeza que seu script php está lidando com a decodificação da URL corretamente, já que isso não é dever do Apache.

    
por 28.04.2011 / 06:14