Regex 多个Nginx别名到一个位置
我想为两个别名到一个位置创建一个位置规则 这是用于一个位置的规则:Regex 多个Nginx别名到一个位置,regex,nginx,alias,Regex,Nginx,Alias,我想为两个别名到一个位置创建一个位置规则 这是用于一个位置的规则: location ~ ^/images/(.*)$ { alias /var/www2/images/$1; } 我想做的是在位置中定义两个别名。那么比如说,, 我可以参观和 它将转到一个别名,即/var/www2/styles/ 我试过这样的方法,但对我不起作用 location ~ ^/(styles|css)(.*)$ { alias /var/www2/styles/$1; } 但是,我对正则表达式了解不多。试试:
location ~ ^/images/(.*)$ { alias /var/www2/images/$1; }
我想做的是在位置中定义两个别名。那么比如说,,
我可以参观和
它将转到一个别名,即/var/www2/styles/
我试过这样的方法,但对我不起作用
location ~ ^/(styles|css)(.*)$ { alias /var/www2/styles/$1; }
但是,我对正则表达式了解不多。试试:
location ~ ^/(?:styles|css)/(.*)$ { alias /var/www2/styles/$1; }
或
$1
指的是第一个捕获组(…)
。当您添加另一个组时,它将引用该组。您可以使用非捕获组(?:…)
,或者参考第二个捕获组$2
如果有人正在寻找一个正则表达式,该正则表达式匹配以字符串开头而不是以字符串结尾的路径,下面是一个匹配/users
、/sales
和/invoices
的工作示例(以及子路径,如/users/settings
):
现在我知道这有点过分了,但是我怎么能在这个位置只允许css文件扩展名,而不允许其他文件扩展名,即使在我的/styles/文件夹中有其他文件?没关系。location~ ^/(?:styles | css)/(.\.css)$这当然只适用于一个扩展名,我如何添加多个扩展名?我是通过location~ ^/(?:icons | ico)获得的/(.*\.(png | gif | ico))${如果你知道更好的方法,请回答。@Tux,看起来不错。尽管你可以使用非捕获组而不是捕获组:
^/(?:icons | ico)/(.*\(?:png | gif | ico))$
location ~ ^/(styles|css)/(.*)$ { alias /var/www2/styles/$2; }
location ~ ^\/(users|sales|invoices) {
proxy_pass http://sample.local;
}