获取Nginx中URL问号后的所有信息

时间:2013-02-07 21:41:09

标签: php nginx

我正在尝试制作一个页面,允许我访问www.example.com/create?453lk6m4y并通过页面createUser.php?id=453lk6m4y创建与该ID相关联的帐户。我遇到的问题是,如果我直接将其传递给PHP脚本,GET请求会将密钥设置为453lk6m4y,并将值设置为空。

换句话说,如果我访问该网址,该网页会理解GET请求

Array
(
    [453lk6m4y] => 
)

我想通过Nginx重写来重写URL。到目前为止我有这个:

rewrite ^/create(\?.*)?$ /createUser.php?id=$1 last; #user creation page

但是,此重写会更改get请求以反映以下内容:

Array
(
    [id] => 
    [453lk6m4y] => 
)

任何重写网址的方法,以便GET请求反映

Array
(
    [id] => 453lk6m4y
)

1 个答案:

答案 0 :(得分:0)

首先,我实际上不确定www.example.com/create?453lk6m4y是否是有效的网址:

  • ?被定义为location和(get)参数之间的分隔符
  • 获取参数通常采用<parameter>=<value>形式,在不同参数之间使用&分隔符

如果你看http://wiki.nginx.org/HttpCoreModule#Variables,你会看到nginx中可用的所有标准变量:

  • 具体而言,$args - 变量将保存整个get参数,即?
  • 之后的所有内容
  • 您还有$arg_PARAMETER个变量,用于访问各个参数值​​。 (因此,如果您有网址example.org/createuser.php?id=1234&page=abc,那么您的变量$arg_id的值为1234,变量$arg_page的值为abc
相关问题