%2F 未在 URL 中被 apache 接受

%2F not accepted in URL by apache

我遇到了这个问题,我无法在站点的搜索框中输入 %2F 和 %5C,因为 apache 在 url 中主动拒绝接受它们。我搜索了我的问题,发现我需要允许这种行为,所以我这样做了,将其添加到我的 htaccess 文件中:

AllowEncodedSlashes On

这并没有解决问题,我仍然收到“找不到对象”的提示。

我有一个 url /search/query%20goes%20here,如果我在查询字符串中键入任何类型的斜线,例如 /search/test%2F1,它将给我默认的 apache 404 错误。我该如何修复它以使其不影响我的重写规则?

编辑 1

我刚刚注意到这个指令导致我所有页面上的内部服务器错误,我不明白为什么。它在apache手册中说它是核心模块的一部分所以我猜它不可能是一个禁用模块的问题。

编辑 2

我尝试移动 httpd.conf 文件中的指令,只是想看看它是否有效,但仍然无效。虽然 500 错误消失了,但修改该文件并不能满足我的目的,我宁愿有一个 htaccess 文件的解决方案。

尝试修改在客户端生成的 URL 以包含一个“?”将查询字符串与服务器路径分开。然后在您的服务器端代码中使用通用 "REQUEST" 变量访问查询字符串。大多数现代编程语言会自动从 URL 中解析出查询字符串,并为您提供要使用的命名变量列表。

I just noticed that this directive has caused internal server error on all of my pages and I cannot figure out why

由于此指令的 http://httpd.apache.org/docs/2.2/en/mod/core.html#allowencodedslashes says, the context 服务器配置,虚拟主机 – 这意味着它不能用于 .htaccess.

(可能是你添加到httpd.conf后忘记重启服务器了)