Nginx上的地图重定向通配符

时间:2017-03-04 19:45:43

标签: redirect nginx

我使用map指令进行重定向。 我设置了一些通配符,但它不起作用:

/notizie~* /news;

我希望所有网址都像" / notizie / $ string"应该重定向" / news"。

出了什么问题?

2 个答案:

答案 0 :(得分:1)

如果您只需要使用301 HTTP代码进行重定向,则可以将location与regexp一起使用:

location ~* ^/notizie(.*)$ {
    return 301 $scheme://$host/news$1;
}

~* - 标识不区分大小写的正则表达式

$1 - 指的是第一个括号中捕获的匹配

return - 停止请求处理结束返回给定代码和url

$host - 是预定义的变量,如果您愿意,可以对其进行硬编码

答案 1 :(得分:1)

如果查询参数对您的重定向很重要:

map $request_uri $redirect_uri {
      ~^/notizie(?<suffix>.*)$ /news$suffix;
      default $request_uri;
    }

否则:

map $uri $redirect_uri {
      ~^/notizie(?<suffix>.*)$ /news$suffix;
      default $uri;
    }