nginx规则在url后附加额外的段

时间:2017-06-08 04:41:10

标签: nginx

我有一个动态网址如下

http://www.xxxx.com/black/xxxx/xxxx
http://www.xxxx.com/blue/xxxx/xxxx
http://www.xxxx.com/red/xxxx/xxxx

我想将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)(/(.+)?)?$ {

}

先谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

location ~ ^/(black|blue|red)/[^/]+/[^/]+$ {
    return 301 /color$request_uri;
}

正则表达式location块的评估顺序非常重要。将此块置于可能存在冲突规则的其他块之上。

有关详细信息,请参阅this document