Apache RewriteRule和斜线(%2F)

我有以下的RewriteRule

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

对于像这样的请求,它可以正常工作

 /like/someting+here/something+else 

但是对于其中一个path部分包含转义斜线( %2F )的请求,服务器会吐出一个404 Not Found错误:

 /like/one%2Ftwo+things/ 

有没有什么办法解决这一问题? 我尝试了[B][NE]标志(独立和一起),但没有任何工作。

编辑:我也试过:

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

所以它不一定要匹配斜线。 它仍然没有工作。

Apache指令帮助了我

 AllowEncodedSlashes On 

我在这里find答案。 引用相关位:

查询string中允许使用裸“%2f”。 但不在URL中。 为了有效,它必须被编码为%252f,我认为你会发现按预期工作。

由于URL本身是无效的,因此服务器在调用任何apache模块之前都会拒绝它。

有关更多信息,请参阅RFC2396 – 统一资源标识符(URI):通用语法 。