使用nginx将301从子域重定向到特定于域的URL

时间:2017-01-30 11:26:26

标签: redirect nginx subdomain url-redirection

我现在有两个博客网站。

A - blog.domain.com - 在Tumblr上创建

B - domain.com/blog/ - 在Wordpress上创建(位于不同服务器上)并由domain.com上的nginx代理提供

我想将我的所有帖子从A重定向到B,因此我会将子域名移动到B服务器并为旧帖子网址设置重定向。

我怎样才能在nginx中做得好?

我在新博客上有一些不同的网址,所以我不能动态地为所有人做这个(我在旧博客上只有30-35个网址,所以可以通过手动逐行重定向完成)。

我认为下面的设置没问题

server {
  server_name  blog.domain.com;
  location / {
    return 301 http://domain.com/blog/;
  }
  location /posts/123456/my-first-post {
    return 301 http://domain.com/blog/my-first-post-on-new-blog/;
  }
}

这是一个很好的方法吗?

非常感谢你在这种情况下的帮助。

1 个答案:

答案 0 :(得分:0)

您可以将URI列表放入地图中:

map $uri $newuri {
    default                     /blog/;
    /posts/123456/my-first-post /blog/my-first-post-on-new-blog/;
    /posts/another/post         /blog/somewhere-on-new-blog/;
}
server {
    server_name  blog.domain.com;
    return 301 http://domain.com$newuri;
}

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