Nginx位置匹配多个扩展名,除非路径以特定单词开头

时间:2018-12-17 01:29:07

标签: regex nginx regex-negation nginx-location nginx-config

如何编写与任何以以下扩展名结尾的路径匹配的位置块:

jpg | jpeg | gif | css | png | js | ico | json | xml | txt | html

除非路径以“ / rails”开头(例如:/rails/randomstring/image.png)?

我目前有以下基本知识:

location ~* \.(jpg|jpeg|gif|css|png|js|ico|json|xml|txt|html)$ {
  gzip_static on;
  gzip on;
  expires max;
  add_header Cache-Control public;
}

但这将与“ /rails/randomstring/image.png”匹配,我不想要那样。

1 个答案:

答案 0 :(得分:1)

您可以将否定的前瞻锚定到字符串的开头:

^(?!\/rails).*(?:jpg|jpeg|gif|css|png|js|ico|json|xml|txt|html)

Demo