根据标记将旧URL重定向到新URL

时间:2013-10-16 14:47:52

标签: url-rewriting nginx rewrite

我们的网站上存在数据库损坏,现在我们正在构建一个新数据库。

但是,我们考虑过不同的方法,我们将旧文章迁移到子域并构建具有更好UI和架构的新网站。

我想要做的是将旧网站的网址重定向到子网域,格式如下:

http://olddomain.com/foo/something

http://sub.olddomain.com/foo/something

我们希望保留旧域以提供新内容

http://oldomain.com/foo2/something

这可能与Nginx

有关

更新

我们有一个基于我们想要重定向的设定词

我们只想要

 http://olddomain/foo/extrainfo

重定向

http://sub.olddomain/foo/extra

使用重写规则时

/abc/ redirect permanent

我们遇到的问题是网址有 foo ,它会被重定向到新域名。

我们只希望http://olddomain/foo/重定向到http://sub.olddomain./foo/extra

不是http://olddomain/abc/foohttp://sub.olddomain

2 个答案:

答案 0 :(得分:0)

您需要在网址中找到一些内容,以确定它是旧网址还是新网址。如果你有什么东西,那就容易了,我们可以回答这个问题。您可以通过以下方式轻松解决您的示例:

location ~ ^/[a-z]+/[a-z]+$ {
  return 302 $scheme://sub.$server_name$request_uri;
}

location ~ ^/[a-z0-9]+/[a-z]$ {
  // serve new stuff
}

但不要忘记搜索引擎和其他机器人!如果您计划将来使用新内容的原始网址,请不要重定向任何内容,只需在相同位置投放网页。

答案 1 :(得分:0)

是的,使用nginx很简单。您只需要在正确的位置/服务器块中放置重写规则:

server { 
    listen       80;
    server_name olddomain.com;
location ~/foo/ {
 rewrite ^ http://sub.olddomain.com$request_uri? permanent;
    }
  location / {
#serve new content
    }
}

server{
        listen       80;
        server_name sub.olddomain.com;
      location / {
    #serve old content
        }
}

我会先回答你之前的评论,你应该确保你考虑到SEO。