nginx variáveis regex httpMapModule

1

A documentação do HttpMapModule afirma que:

Since 1.0.4, case insensitive regular expressions can be used by prefixing the pattern with ~*.

E dá o exemplo:

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

Eu atualizei para nginx/1.2.7 para fazer uso disso, e os regexes ingênuos funcionam bem, mas as variáveis não. Quando eu tento a sintaxe acima, recebo o erro:

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

Eu também tentei as seguintes sintaxes, mas nenhuma delas funcionou:

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

mas nenhum deles funcionou também.

Alguém sabe como fazer com que variáveis funcionem em expressões regulares no HttpMapModule?

    
por Robin Winslow 25.02.2013 / 20:43

1 resposta

8

(?P<name>pattern) é a sintaxe PCRE padrão para grupos de captura nomeados - a documentação não possui um P .

A seção "Subpastas nomeadas" na Wikipedia declara que (?<name>...) e (?'name'...) são válidos para o PCRE 7.0 em diante ; presumivelmente, sua versão do nginx está vinculada a uma versão anterior do PCRE.

    
por 25.02.2013 / 21:44