apache - 需要在 Apache 上允许编码斜杠

标签 apache apache2 apache-config

我目前正在尝试将 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/

相关文章:

macos - 127.0.0.1 和::1 有什么区别

apache - 当我使用 VMware Workstation 时,我可以从主机访问我的 guest 服务器的本地主机吗?

java - 转发 header 在 Spring Boot + Kubernetes 中不起作用

php - Apache 的别名指令未按预期工作

'>' 之后的 PHP 代码显示为 HTML

ssl - 502 proxy Error [从远程服务器读取错误]

apache - Bugzilla Apache 服务器配置

apache - 如何基于环境变量在 Apache 配置中包含外部 httpd.conf

php - 尝试使用 Yii 2 启用漂亮的 URL 时出错

node.js - 如何使用不同端口在同一台服务器上运行多个跨平台 Web 应用程序?