Nginx 301重定向语法错误

Nginx 301 redirect syntax error

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

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

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

谁能帮我解释错误并告诉我如何正确重定向?

谢谢

您不需要将其放在位置块内。只需一个重写规则就足够了。

rewrite ^/news/?$ /blog redirect;

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

location = /news {
    return 301 /blog;
}

否则,如果你这样做,其实是想要一个通配符:

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

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