A diretiva do Apache ajudou-me
AllowEncodedSlashes On
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.
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.
Tags mod-rewrite apache-2.2