3

我开发了一个使用 $_REQUEST[] 超全局的 PHP 脚本。典型的客户端请求可能包括:

http://host.name/socnet/add.php?shortid=1&author=NewUser2&comment=Dad%20dad%20dad

此 URL 由 Apache 在我的生产环境中根据以下重写规则重写为等效的 https:// URL:

RewriteRule ^socnet/add.php(.*) https://%{SERVER_NAME}/socnet/add.php$1 [R,L]

在使用 PHP 5.3.2 进行开发并使用 NetBeans 进行调试时,一切都按预期工作$_REQUEST['comment']="Dad dad dad"

但是,当我部署到运行 PHP 5.2.4 并且执行上述 URL 重写的 VPS 主机环境时$_REQUEST['comment']="Dad%20dad%20dad"...

所以看起来不像$_REQUEST['comment']5.2.4 和我的重写规则那样对 url 进行解码

任何关于为什么会发生这种情况的想法和合理的解决方法将不胜感激。它是与 PHP 版本相关的问题还是更微妙的问题?有兴趣了解在部署之前遇到此问题的任何人以及他们是如何解决的。

4

1 回答 1

1

我怀疑 mod_rewrite 正在对其进行编码,导致它被编码两次。我没有尝试过,但不是匹配 (.*),而是尝试[R,L][R,L,QSA]. QSA代表查询字符串附加。

编辑

landstatic 自己找到的正确选项是NE不逃避。

于 2010-07-21T16:22:36.270 回答