代码之家  ›  专栏  ›  技术社区  ›  codeasone

在部署到5.2.4之后,php脚本没有解码$\u request[]中的URL参数(存在%20个值)

  •  3
  • codeasone  · 技术社区  · 15 年前

    我开发了一个PHP脚本,它使用了$\u request[]superglobal。典型的客户机请求可能包括:

    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的vps主机环境时,上面描述的URL重写是由哪个来完成的 $_REQUEST['comment']="Dad%20dad%20dad"

    所以看起来像 $_REQUEST['comment'] 不是如预期的那样使用5.2.4和我的重写规则解码的URL

    任何关于这件事发生的原因和明智的解决办法的想法都将受到极大的赞赏。这是与PHP版本相关的问题还是更微妙的问题?有兴趣听取在部署之前遇到此问题的任何人的意见,以及他们如何解决此问题。

    1 回复  |  直到 12 年前
        1
  •  1
  •   igorw    15 年前

    我怀疑mod eu rewrite正在对它进行编码,导致它被编码两次。我没有尝试过此操作,但请尝试更改 [R,L] [R,L,QSA] . QSA 表示追加的查询字符串。

    编辑

    Landstatic自己找到的正确选项是 NE 它代表着不逃跑。