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

Redirect 使用nginx将301从子域重定向到特定于域的url,redirect,nginx,subdomain,url-redirection,Redirect,Nginx,Subdomain,Url Redirection,我现在有两个博客网站 A-blog.domain.com-在Tumblr上创建 B-domain.com/blog/-在Wordpress上创建(位于不同的服务器上),并由domain.com上的nginx代理提供服务 我想将我所有的帖子从A重定向到B,所以我会将我的子域移动到B服务器,并为旧帖子URL设置重定向 我怎样才能在nginx中做到这一点 我在新博客上有一些不同的URL,所以我不能为所有人动态地这样做(我在旧博客上只有30-35个URL,所以可以通过手动逐行重定向来完成) 我认为下面的

我现在有两个博客网站

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

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

我想将我所有的帖子从A重定向到B,所以我会将我的子域移动到B服务器,并为旧帖子URL设置重定向

我怎样才能在nginx中做到这一点

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

我认为下面的设置可以

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/;
  }
}
这是一个好方法吗


非常感谢您在本例中提供的帮助。

您可以将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;
}
有关详细信息,请参阅