Nginx

nginx httpMapModule 正則表達式變數

  • February 26, 2013

HttpMapModule文件指出:

從 1.0.4 開始,可以通過在模式前加上 ~* 來使用不區分大小寫的正則表達式。

並舉例:

map $uri $myvalue {
   /aa                   /mapped_aa;
   ~^/aa/(?<suffix>.*)$  $suffix;
}

我更新為nginx/1.2.7利用這一點,天真的正則表達式工作正常,但變數不行。當我嘗試上述語法時,我收到錯誤:

nginx: [emerg] pcre_compile() failed: unrecognized character after (?< in "^/aa/(?<suffix>.*)$" at "suffix>.*)$"

我還嘗試了以下語法,但都沒有奏效:

~^(.*)$  $1;
~^(.*)$  \1;

但他們都沒有工作。

有誰知道如何讓變數在 HttpMapModule 的正則表達式中工作?

(?P<name>pattern)是命名擷取組的標準 PCRE 語法 - 文件缺少P.

Wikipedia 上的“命名子模式”部分聲明(?<name>...)(?'name'...)適用於 PCRE 7.0 及以上版本;大概您的 nginx 版本與早期版本的 PCRE 相關聯。

引用自:https://serverfault.com/questions/482372