2013-02-07 61 views
0

我試圖製作一個頁面,允許我訪問www.example.com/create?453lk6m4y並通過頁面createUser.php?id=453lk6m4y創建與該ID鏈接的帳戶。我遇到的問題是,如果我直接將它傳遞給PHP腳本,則GET請求會將密鑰設置爲453lk6m4y,並將該值設置爲無。獲取Nginx中的URL問號後的所有信息

換句話說,如果我訪問該網址,頁面瞭解GET請求

Array 
(
    [453lk6m4y] => 
) 

我想重寫URL通過Nginx的重寫。我有這個至今:

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

然而,這種改寫變化GET請求,以反映如下:重寫URL,這樣GET請求將反映

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

任何方式

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

我建議不使用'?'但是'/'。所以'www.example.com /創建/ 453lk6m4y' –

+0

這樣做的工作,但它可以使它與'?'工作? – josh

+1

'?'是查詢字符串的前綴。不是網址。雖然它可能是可能的,但它不是*正確*。 –

回答

0

首先,我實際上不確定www.example.com/create?453lk6m4y是否是有效的網址:

  • ?被定義爲位置之間的分體的(獲取)參數
  • 獲得參數是通常的正常形式<parameter>=<value>的,具有不同的參數

也就是說如果之間的&隔板你看http://wiki.nginx.org/HttpCoreModule#Variables你會看到在nginx的所有可用的標準變量:

  • 具體的$args -variable將舉行全的獲取參數,即所有在?
  • 之後的所有東西,您還有$arg_PARAMETER變量,以訪問各個參數值​​。 (所以,如果你有一個網址example.org/createuser.php?id=1234&page=abc那麼你有一個變量$arg_id與價值1234和可變$arg_page與價值abc