解决URL网址中遇到%2F或%5C(正反斜杠)等特殊符号导致URL重写失效出现404的问题
在使用Apache地址重写mod_rewrite期间,发现,当URL和PATH_INFO中出现/(/)或者\(\), 会被认为这是个不合法的请求, Apache将会直接返回"404 (Not Found)"错误。
也就是说,Apache在调用 mod_proxy 或 mod_rewrite 模块之前,就直接拒绝请求,给出404错误。
这样做主要是为了防止CGI的安全漏洞发生,尤其是在脚本中使用了PATH_INFO但是又没有做安全过滤操作的话,很容易被注入漏洞。
假定URL是安全的,即我们想用这种URL中包含这种编码转换的字符串,如何操作?如何解决这个问题?
有2种解决方案:
方案一:打开Apache的“AllowEncodedSlashes”指令
在Apache的配置文件(httpd.conf)中,找到 节点,配置如下代码即可(注意,把此规则添加到.hta