nginx localização regex simples

4

Eu preciso definir um parâmetro de localização no nginx se os primeiros 5 dígitos da URL forem números.

site.com/12345/ or site.com/12345

Mas eu não posso, pois a minha vida parece ter a expressão regular correta.

Nenhum desses trabalhos.

location ^/([0-9]) { }
location ^/(\d\d\d\d\d) {}
location /(\d\d\d\d\d) {}
    
por The Digital Ninja 26.04.2013 / 21:25

2 respostas

9

Tente isso

location ~ "^/[\d]{5}" {
    # ...
}

~ significa o local de regex

^ significa o começo da linha

[\d] é uma abreviação de dígitos correspondentes à classe de caracteres

{5} mostra que os dígitos devem ser exatamente cinco, nem mais nem menos

e () parênteses não são necessários se você não quiser usar o agrupamento, $ 1, por exemplo

Aspas duplas, porque as chaves curley usadas na regex devem ser colocadas entre aspas duplas: link

    
por 29.04.2013 / 06:24
2

Experimente esta sintaxe (testada no meu servidor):

location ~ ^/([0-9]+) {
  #...
}
    
por 26.04.2013 / 21:54