这是我们当前 Nginx 规则的示例,它将一些流量从一个基本域重定向到另一个(DNS 迁移的结果):
location ~* /(var1|var2|var3) {
rewrite ^ http://newurl.com$uri? permanent;
}
因此,使用以下网址上方的网址:oldurl.com/var1/foo
正确重定向到:newurl.com/var1/foo
目前使用这种方法oldurl.com/foo
不会重定向到设计和我们想要的新域。
然而,我们现在遇到的问题是,如果在位置语句中找到的任何关键字在 URL 中的任何位置使用,那么它就会被重定向。我们只想对/###/
在 url 序列的第一个文件夹中找到的变量进行模式匹配。
换句话说,我们想要oldurl.com/var1/foo
重定向但不是oldurl.com/foo/var1
鉴于我们当前的正则表达式规则,它会在 url 中找到 var1(即使它位于第二个位置)并重定向。
换句话说:oldurl.com/foo/var1
重定向到newurl.com/foo/var1
但我们不希望它。
我的正则表达式对于仅针对第一块/###/
代码的模式匹配并不那么漂亮。有人可以帮助我正确的 regex/nginx 语句吗?