2016-04-17 96 views
0

我想在Nginx位置塊中做一個組捕獲,它不適合我。Nginx位置組捕獲+重寫

我試圖做甚至可能嗎?

location ~* /(?<cat>cars|trucks|bikes|motorcycle|quads) { 
    rewrite ^/$cat/([0-9]+)(.*)$ /page.php?id=$1 last; 
} 

我收到的錯誤信息是:

「(。*)^/$貓/([0-9] +)$」 不匹配「/汽車/ 120 /新 - 汽車租賃/「

我有更多的類別比我發佈,並試圖防止爲每個特定的類別名稱寫一個重寫5倍。

任何幫助,將不勝感激。

回答

0

我對這個特定的語法並不熟悉,但是基於我與他人的經驗,是否有可能只需要避開正在使用的正斜槓?

location ~* \/(?<cat>cars|trucks|bikes|motorcycle|quads) { 
    rewrite ^\/$cat\/([0-9]+)(.*)$ /page.php?id=$1 last; 
} 
+0

我從來沒有必要在我的其他重寫中逃避正斜槓。這是我得到的語法:http://nginx.org/en/docs/http/server_names.html#regex_names – Dave

0

我做這個,而不是解決了這個問題:

location ~* /(cars|trucks|bikes|motorcycle|quad-bikes) { 
    rewrite ^/([a-zA-Z-]+)/([0-9]+)(.*)$ /page.php?id=$2 last; 
    ... 
    ... 
} 

正則表達式([A-ZA-Z - ] +)允許我使用可能出現的破折號AZ字符(不​​區分大小寫)我的類別/頁面名稱。