Regex NGinx配置中仅与第一个url参数进行比较的正则表达式规则
以下是当前Nginx规则的一个示例,该规则将一些流量从一个基本域重定向到另一个基本域(DNS迁移的结果): 因此,使用以下url上方的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序列的第一个/###/文件夹
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;
}