当RewriteRule 遇到含有 (%2F)编码的非法地址时
使用Wordpress作为博客平台会大量的运用.htaccess来实现url rewrite。除了系统自动生成的一些规则外,我也经常会添加一些自己的rewrite规则,比如,我会添加这样的条件判断:
RewriteCond %{FILE_NAME} !^feed
这样的过滤条件正常情况下是没问题的,但最近在日志里发现有些url里带有‘%2F’的字样,对于含有这样的字符的url,上面的语句会不起作用。
这个问题让我苦恼了很久,最后终于找到了原因,在stackoverflow有人遇到了跟我相似的问题。
‘%2F’是字符‘/’的转义,它是不能包含在文件名中的,也就是无效的文件名。%{FILE_NAME}遇到这样的非法文件名就无法正常的解析。所以,我遇到的‘%2F’只是个例子,还有很多这样的字符不能吧包含在文件名中,它们同样不能被RewriteCond解析。
后来,我将上面的rewrite代码改成这样:
RewriteCond %{REQUEST_URI} !^/feed
再配合其它的条件,变相的解决了问题。
阅读余下内容