2014-10-27 9 views

risposta

5

Da nginx docs:

Una posizione può essere definita da una stringa di prefisso o da un'espressione regolare. Le espressioni regolari sono specificate con il precedente modificatore "~ *" (per la corrispondenza senza distinzione tra maiuscole e minuscole) o il modificatore "~" (per la corrispondenza con distinzione tra maiuscole e minuscole).

Quindi in posizione deve essere utilizzato il ~* per la distinzione tra maiuscole e minuscole.

location ~* /something/ { 
    # your code here 
} 
+1

non è più un * * Pre ** corregge la stringa se si utilizza una regex. Assicurati di fare in modo che 'location ~ * ^/something /' corrisponda solo dall'inizio. –

10

Suppongo che lo http://example.com/something non venga reindirizzato. Quindi, utilizzare un percorso prefisso per il match case-sensitive con il modificatore ^~ di saltare il controllo delle espressioni regolari:

location ^~ /something { 
    return 200 "case sensitive something match 
"; 
} 

A questo punto aggiungere il insensibile regolare posizione espressione caso per il reindirizzamento:

location ~* ^/something { 
    return 301 $scheme://$host/something; 
} 
+0

Grazie per l'ultimo bit con il segno di omissione. Era esattamente ciò di cui avevo bisogno. –

Problemi correlati