Nginx
nginx httpMapModule 正則表達式變數
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 相關聯。