Nginx 301重定向语法错误

时间:2016-07-04 15:02:58

标签: redirect nginx url-rewriting http-status-code-301 ngx-http-rewrite-module

我刚刚发现我的nginx语法不正确:

location /news { rewrite ^(.*)$ /blog redirect;}

我想将mysite.com/news重定向到mysite.com/blog,但该代码将更多页面重定向到博客。

任何人都可以帮我解释错误并告诉我如何正确重定向?

感谢

2 个答案:

答案 0 :(得分:1)

最佳做法是仍然使用location。如果您不希望/news以下的任何内容重定向到/blog(例如,不需要通配符),那么以下是您想要的,并且可能是创建单个的最有效方式别名:

location = /news {
    return 301 /blog;
}

否则,如果你这样做,实际上需要一个通配符:

location /news {
    rewrite ^/news(.*)  /blog$1 permanent;
}

P.S。另请注意redirect would cause 302 redirects; if you want 301, then the keyword is called permanent

答案 1 :(得分:0)

你不需要把它放在位置块内。只需一个重写规则即可。

rewrite ^/news/?$ /blog redirect;