我目前正在尝试将 URL 放入 URL 中。例如:
http://example.com/url/http%3A%2F%2Fwww.url2.com
我知道我必须对 URL 进行编码,我已经这样做了,但现在我从服务器而不是我的应用程序返回了 404
错误。我认为我的问题出在 apache 上,可以使用 AllowEncodedSlashes On
指令修复。
我尝试将该指令放在 httpd.conf 的底部,但没有效果,并且不确定下一步该怎么做。我把它放在正确的地方了吗?如果是的话,还有其他解决方案吗?
最佳答案
我不断看到这篇文章是为了解决另一个问题。让我快速解释一下。
我有相同样式的 URL,并且也尝试代理它。
示例:将请求从 /example/
代理到另一台服务器。
/example/http:%2F%2Fwww.someurl.com/
问题 1: Apache 认为该 URL 无效
解决方案:httpd.conf 中的AllowEncodedSlashes On
问题 2: Apache 解码编码的斜杠
解决方案:httpd.conf 中的AllowEncodedSlashes NoDecode
(需要 Apache 2.3.12+)
问题 3: mod_proxy 尝试重新编码(双重编码)URL,将 %2F
更改为 %252F
(例如 /example/http:%252F%252Fwww.someurl.com/
)
解决方案:在httpd.conf
中使用ProxyPass
关键字nocanon
通过代理传递原始URL。
ProxyPass http://anotherserver:8080/example/ nocanon
httpd.conf 文件:
AllowEncodedSlashes NoDecode
<Location /example/>
ProxyPass http://anotherserver:8080/example/ nocanon
</Location>
引用:
关于apache - 需要在 Apache 上允许编码斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4390436/