Nginx:使用单个内联更改将多个URL格式重定向到相同的格式

时间:2012-04-23 16:41:13

标签: regex nginx

我是nginx的新手,需要设置一些重定向,我知道Nginx中的重定向是基于正则表达式的,但这不是我的强项。

我们正在推出最新的代码,以及重定向以下

的所有实例的内容
https://uat1.lipsum.com/browse
https://uat1.lipsum.com/popular
uat1.lipsum.com/browse/[anything]   
uat1.lipsum.com/popular/[anything]

要...

https://uat1.lipsum.com/discovery
https://uat1.lipsum.com/discovery
uat1.lipsum.com/discovery/[anything]
uat1.lipsum.com/discovery/[anything]

基本上,用“发现”替换所有出现的“浏览”和“流行”

我尝试了几种方法......

我能想出的最好的是以下内容,它可以正确地重定向,但其他格式不会。

https://uat1.lipsum.com/browse
https://uat1.lipsum.com/popular

nginx.conf

location /browse/ {
    rewrite ^(.*)/browse/(.*)$ /discover/ permanent;
    }

    location /browse {
    rewrite ^(.*)/browse /discover permanent;
   }

 location /popular/ {
    rewrite ^/popular/ /discover/ permanent;
    }

    location /popular {
    rewrite ^/popular /discover permanent;
   }
}

1 个答案:

答案 0 :(得分:2)

使用反向引用的魔力。在()中放入正则表达式捕获匹配的表达式,然后使用$ 1,$ 2,$ 3等将拉出第一个,第二个,第三个等捕获的文本。

location /browse/ {
    rewrite ^/browse/(.*)$ /discover/$1 permanent;
    }

    location /browse {
    rewrite ^/browse$ /discover permanent;
   }

 location /popular/ {
    rewrite ^/popular/(.*)$ /discover/$1 permanent;
    }

    location /popular {
    rewrite ^/popular$ /discover permanent;
   }
}

有关详细信息,请参阅here