无法让 mod_proxy 正确转发编码的斜杠 (/) 字符 (%2f)

gat*_*ado 13 proxy reverse-proxy apache-2.2

我有一个虚拟主机设置为重定向ntung-gitblit.localhost--> myserver:1279。但是,它不适用于前向编码斜杠 ( %2f)。我试图访问的 URL 是,

http://ntung-gitblit.localhost/ABC%2fXYZ
Run Code Online (Sandbox Code Playgroud)

没有AllowEncodedSlashes,它会失败——apache 尝试/error/HTTP_NOT_FOUND.html.var在服务器上访问。设置AllowEncodedSlashesOn导致以下内部 URL 命中,

http://myserver:1279/ABC/XYZ
Run Code Online (Sandbox Code Playgroud)

并设置AllowEncodedSlashesNoDecode导致以下 URL 被命中,

http://myserver:1279/ABC%252fXYZ
Run Code Online (Sandbox Code Playgroud)

换句话说,它是过度逃逸或逃逸不足。问题:如何让它命中myserver:1279/ABC%2fXYZ

gat*_*ado 15

对不起,刚刚得到它(这里的第三个答案),解决方案是nocanonProxyPass指令中使用,

AllowEncodedSlashes On
ProxyPass / http://myserver:1279/ nocanon
Run Code Online (Sandbox Code Playgroud)

如果问题不再有用,我可以删除它。

  • 感谢你没有成为 DenverCooper9。https://xkcd.com/979/ (3认同)