nginx重定向旧站点URL并仅修改1个语言后缀

时间:2016-12-25 23:44:58

标签: redirect nginx

我想将旧网站的网址重定向到新网站。但新网站的页面名称不同,语言字符也发生了变化。

例如:

en/about/info会重定向到en/com/information

但是

ge/about/info将转到ka/com/information

map $request_uri $redirect_uri {

<lang>/about/info/ $lang/com/information/

}

任何想法我会怎么做?有很多网址,所以我不想写这些针对每种语言硬编码的网址。

1 个答案:

答案 0 :(得分:0)

map指令可以捕获正则表达式的一部分,但不能在映射结果中使用该捕获。

因此可以创建名为lang的命名捕获(例如),并在评估映射变量后使用。例如:

map $request_uri $redirect_uri {
~*(?<lang>/\w\w/)about/info/ com/information/;
}

serverlocation区块中:

if ($redirect_uri) {
    return 301 $lang$redirect_uri;
}

请注意,$lang仅在$redirect_uri语句中评估if的值后创建。

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