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; 
}