我有以下的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):通用语法 。