Apache RewriteRule e barras (% 2F)

5

Eu tenho o seguinte RewriteRule :

RewriteRule ^like/(.+)$ ask.php/$1

O que funciona muito bem para solicitações como:

/like/someting+here/something+else

Mas, para solicitações em que uma das partes do caminho contém uma barra com escape ( %2F ), o servidor apresenta um erro 404 Not Found:

/like/one%2Ftwo+things/

Existe alguma maneira de corrigir isso? Eu tentei os dois [B] e [NE] flags (separados e juntos), mas nada funcionou.

Editar: Eu também tentei:

RewriteRule ^like/ ask.php
# or
RewriteRule ^like/(.*) ask.php

Para que não precise necessariamente corresponder à barra. Ainda não está funcionando.

    
por Felix 17.05.2010 / 14:56

2 respostas

4

A diretiva do Apache ajudou-me

AllowEncodedSlashes On  
    
por 19.05.2010 / 13:47
6

Encontrei a resposta aqui aqui . Para citar os bits relevantes:

The naked "%2f" is allowed in a query string. but not in a URL. In order to be valid, it would have to be encoded as %252f, which I think you will find to work as you expect.

Because the URL is itself invalid, the server is rejecting it before any apache modules are invoked.

For more information, see RFC2396 - Uniform Resource Identifiers (URI): Generic Syntax.

    
por 17.05.2010 / 15:46