Localização da Nginx "não igual a" regex
Como é que eu estabeleço uma condição location
em Nginx que responde a qualquer coisa que não seja igual aos locais listados?
tentei:
location !~/(dir1|file2\.php) {
rewrite ^/(.*) http://example.com/$1 permanent;
}
Mas não despoleta o redireccionamento. Ele simplesmente lida com o URI solicitado usando as regras no resto da configuração do servidor.
3 answers
De acordo com documentação nginx
Para que pudesses definir algo como ...Não existe sintaxe para não corresponder a uma expressão regular. Em vez disso, corresponder à expressão regular do alvo e atribuir um bloco vazio, depois usar a localização / para corresponder a qualquer outra coisa
location ~ (dir1|file2\.php) {
# empty
}
location / {
rewrite ^/(.*) http://example.com/$1 permanent;
}
Usar uma afirmação regex negativa:
location ~ ^/(?!(favicon\.ico|resources|robots\.txt)) {
.... # your stuff
}
Suponha que você tem dois locais que dizem, location1
e location2
, você pode tentar seguir a configuração do bloco de localização para resolver o seu problema.
location ~ ^/(location1|location2) {
rewrite (.*) http://example.com/$1 permanent;
}
Também o problema que está a enfrentar pode ser devido à sequência de vários blocos de localização na sua configuração. Por favor, verifique, no caso de qualquer um dos blocos de localização que vem antes disso, atende o pedido.