nginx规则,用于在url后附加附加段

nginx规则,用于在url后附加附加段,nginx,Nginx,我有一个动态URL的如下 http://www.xxxx.com/black/xxxx/xxxx http://www.xxxx.com/blue/xxxx/xxxx http://www.xxxx.com/red/xxxx/xxxx 我想对上面的url执行301重定向 http://www.xxxx.com/color/black/xxxx/xxxx http://www.xxxx.com/color/blue/xxxx/xxxx http://www.xxxx.com/color/red/

我有一个动态URL的如下

http://www.xxxx.com/black/xxxx/xxxx
http://www.xxxx.com/blue/xxxx/xxxx
http://www.xxxx.com/red/xxxx/xxxx
我想对上面的url执行301重定向

http://www.xxxx.com/color/black/xxxx/xxxx
http://www.xxxx.com/color/blue/xxxx/xxxx
http://www.xxxx.com/color/red/xxxx/xxxx
我正试着这样匹配

location ~  /(black|blue|red)(/(.+)?)?$ {

}

谢谢你的建议

location正则表达式应该在URI的开头包含一个锚点

如果您试图仅匹配包含后缀
/xxxx/xxxx
的URI,则可以使用字符类
[^/]
来匹配非斜杠字符

使用
return
语句可以直接重定向:

location ~ ^/(black|blue|red)/[^/]+/[^/]+$ {
    return 301 /color$request_uri;
}
正则表达式
location
块的求值顺序非常重要。将此块置于规则可能冲突的其他块之上

有关详细信息,请参阅