Comment définir une condition location
dans Nginx qui répond à tout ce qui ne correspond pas aux emplacements répertoriés?
J'ai essayé:
location !~/(dir1|file2\.php) {
rewrite ^/(.*) http://example.com/$1 permanent;
}
Mais cela ne déclenche pas la redirection. Il gère simplement l'URI demandé en utilisant les règles du reste de la configuration du serveur.
Selon nginx documentation
il n'y a pas de syntaxe pour ne pas faire correspondre une expression régulière. Faites plutôt correspondre l'expression régulière cible et assignez un bloc vide, puis utilisez location/pour faire correspondre tout autre élément.
Pour que vous puissiez définir quelque chose comme
location ~ (dir1|file2\.php) {
# empty
}
location / {
rewrite ^/(.*) http://example.com/$1 permanent;
}
je cherchais le même. et trouvé cette solution.
Utilisez une assertion de regex négative:
location ~ ^/(?!(favicon\.ico|resources|robots\.txt)) {
.... # your stuff
}
Source expressions régulières négatives dans l'emplacement
Explication de Regex:
Si l'URL ne correspond à aucun des chemins suivants
example.com/favicon.ico
example.com/resources
example.com/robots.txt
Ensuite, il ira à l'intérieur de ce bloc d'emplacement et le traitera.