2012-10-22 76 views
1

我試圖通過Nginx的下列URL重寫:Nginx的URL重寫與多參數

http://www.domain.com/script.php?title=LONGSTRING&desc=LONGSTRING&file=LONGSTRING&id=THREELETTERS 

弄成這個樣子:

http://www.domain.com/script/LONGSTRING/LONGSTRING/LONGSTRING/LONGSTRING/THREELETTERS.html 

所有我已經能夠到目前爲止發現的是如何包含一個變量。我有五個變量要通過,每個變量都以「/」結尾。

回答

2

您可以通過$arg_name變量

在nginx的訪問腳本參數name與腳本參數的搜索引擎友好的URL重寫URL,然後變成一個簡單的重寫,像這樣:

location /script/script.php { 
    rewrite^/script/$arg_title/$arg_desc/$arg_file/$arg_id.html last; 
} 

的相反,重寫友善的網址到PHP腳本版本將是:

location /script/ { 
    rewrite "^/script/([a-zA-Z]+)/([a-zA-Z]+)/([a-zA-Z]+)/([a-zA-Z]{3})$" 
      /script.php?title=$1&desc=$2&file=$3&id=$4 last; 
} 

基本上你有正則表達式ca您可以參考$ 1,$ 2,...變量

+0

這看起來與問題相反。從和到模式是錯誤的方式。它是基於路徑的參數。 –

+0

哎呀,你是對的我做了錯誤的方式,添加了另一個方向 – cobaco