Regex NGinx配置中仅与第一个url参数进行比较的正则表达式规则

Regex NGinx配置中仅与第一个url参数进行比较的正则表达式规则,regex,nginx,Regex,Nginx,以下是当前Nginx规则的一个示例,该规则将一些流量从一个基本域重定向到另一个基本域(DNS迁移的结果): 因此,使用以下url上方的url:oldurl.com/var1/foo 正确地重定向到:newurl.com/var1/foo 使用这种方法,oldurl.com/foo当前不会重定向到新的域,这是我们设计的,也是我们想要的 然而,我们现在遇到的问题是,如果在location语句中找到的任何关键字在URL中的任何位置被使用,那么它就会被重定向。我们只想对url序列的第一个/###/文件夹

以下是当前Nginx规则的一个示例,该规则将一些流量从一个基本域重定向到另一个基本域(DNS迁移的结果):

因此,使用以下url上方的url:
oldurl.com/var1/foo

正确地重定向到:
newurl.com/var1/foo

使用这种方法,
oldurl.com/foo
当前不会重定向到新的域,这是我们设计的,也是我们想要的

然而,我们现在遇到的问题是,如果在location语句中找到的任何关键字在URL中的任何位置被使用,那么它就会被重定向。我们只想对url序列的第一个
/###/
文件夹中的变量进行模式匹配

换句话说,我们想要
oldurl.com/var1/foo

重定向但不是
oldurl.com/foo/var1

根据我们当前的正则表达式规则,它会在url中找到var1(即使它位于第2位)并重定向。
换句话说:
oldurl.com/foo/var1

重定向到
newurl.com/foo/var1

但我们不想这样


我的正则表达式不太适合只与
/###/
代码的第一个块进行模式匹配。有人能帮我使用正确的regex/nginx语句吗?

这是一个正则表达式,因此需要使用
^
将其锚定到url路径的开头,如下所示:

location ~* ^/(var1|var2|var3) {
    rewrite ^ http://newurl.com$uri? permanent;
}

我建议使用
return301$scheme://newurl.com$uri
location ~* ^/(var1|var2|var3) {
    rewrite ^ http://newurl.com$uri? permanent;
}