Nginx 位置匹配多个扩展名,除非路径以特定单词开头
Nginx location match multiple extensions unless path starts with specific word
如何编写一个位置块来匹配以以下扩展名结尾的任何路径:
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”,我不想要那个。
您可以将否定前瞻锚定到字符串的开头:
^(?!\/rails).*(?:jpg|jpeg|gif|css|png|js|ico|json|xml|txt|html)
如何编写一个位置块来匹配以以下扩展名结尾的任何路径:
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”,我不想要那个。
您可以将否定前瞻锚定到字符串的开头:
^(?!\/rails).*(?:jpg|jpeg|gif|css|png|js|ico|json|xml|txt|html)