>好的,我刚刚将服务器从共享主机切换到专用服务器,除了一个问题外,一切似乎都运行相同。 在我进入这个之前,我应该提到两个服务器在 LAMP 堆栈上运行完全相同的代码点火器配置
。我认为仅通过示例来显示是最容易的,因此它们是:
URI:/search/term/%
新服务器结果:错误请求 - 服务器错误
旧服务器结果:执行搜索并返回 % 的结果
URI:/search/term/%20
新服务器结果:搜索并返回空格的结果(%20 的转换)
旧服务器结果:搜索并返回空格的结果(%20 的转换)
URI:/search/term/%2F
新服务器结果:未找到 - 服务器错误
旧服务器结果:搜索并返回/(%2F 的转换)
的结果
我希望服务器在这些实例中产生结果,就像以前的服务器一样。
更新<</strong>BR/>Senario #3 已解决,但第一个问题仍然存在,我无法弄清楚。 我想添加有关它的更多详细信息,以便深入了解它。
确切的错误消息是:
400 错误请求错误;您的浏览器发送了此服务器无法理解的请求。
- 当我检查 apache 错误日志时,那里没有关于此错误的任何内容。
- 在所有浏览器中和清除缓存后,结果都是相同的。
- 最后,我很确定我设置了正确的AcceptPathInfo,因为当我转到url:/robots.txt/klsdfj(不是真实位置)时,它会生成robots.txt文件的内容。 据我所知,这是该指令的正确功能。
如果需要任何进一步的信息,请告诉我,我很乐意提供。谢谢!!
我认为
你应该看看apache指令AllowEncodedslashes或这个:AcceptPathInfo
问候
米米兹
如果要从表单传递该文本,则可能需要使用 Javascript encodeURI()
文本并将其传递给服务器。 然后服务器(PHP)可以使用rawurldecode()
对其进行解码。 使用您的示例,%20
将在 URL 中变得%2520
,然后服务器将解码它被%20
。
http://www.php.net/manual/en/function.rawurldecode.php