我们在我工作的地方遇到了一个奇怪的争论,我可能错了,所以这就是我问的原因。
我们的软件向 Apache 服务器输出一个目录,该目录将目录名称中的下划线替换为 %5F。
例如,如果目录的名称在我们的软件中作为字符串列出,它将是:“andy_test”,但是当软件将目录输出到 Apache 服务器时,它将变为“andy%5Ftest”。不幸的是,当您访问服务器上的 url 时,它最终会变成“andy%255Ftest”。
不知何故,这对我来说似乎是错误的,再一次的进展是:
我假设“%5”是下划线编码,而“%25”是“%”编码。
现在在我看来,目录名称应该在服务器上列出的方式只是简单的 andy_test,如果您使用的是编码的 URI,那么也许您最终会使用“andy%5Ftest”来访问目录 Apache 服务器。
我问了后端的人,他们说他们只是:“编码任何不是字母或数字的东西。
所以我想我对此有点困惑。你能告诉我谁是对的,并指导我了解一些关于为什么的信息吗?
最佳答案
您不应在创建目录名称时对其进行编码(如您所建议的那样)。编码应该只发生在它被分发给浏览器的最后阶段。这就是为什么您最终使用“双”编码的原因:%25 是 %,而 5F 是第一次下划线编码的剩余部分。
另外,请注意,您不需要根据 rfc1738 对下划线进行编码。 .
2.2. URL Character Encoding Issues
...
Thus, only alphanumerics, the special characters "$-_.+!*'(),", and reserved characters used for their reserved purposes may be used unencoded within a URL.
关于apache - 目录名称中带有下划线的 URL 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2222519/