0

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

换句话说,如果我访问那个 url,页面就会理解 GET 请求

Array
(
    [453lk6m4y] => 
)

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

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

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

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

任何重写 url 以便 GET 请求反映的方法

Array
(
    [id] => 453lk6m4y
)
4

1 回答 1

0

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

  • ?被定义为位置和(获取)参数之间的分隔符
  • 获取参数通常是通常的形式<parameter>=<value>,不同参数之间有&分隔符

也就是说,如果您查看http://wiki.nginx.org/HttpCoreModule#Variables,您将看到 nginx 中可用的所有标准变量:

  • 具体来说,$args-variable 将保存整个 get 参数,即之后的所有内容?
  • 您还可以使用$arg_PARAMETER-variables 来访问各个参数值​​。(所以如果你有一个 urlexample.org/createuser.php?id=1234&page=abc那么你有一个$arg_id带有 value1234的变量和一个$arg_page带有 value的变量abc
于 2013-02-08T16:06:21.620 回答