【问题标题】:Redirecting old URLs to new URLs based on tags根据标签将旧 URL 重定向到新 URL
【发布时间】:2013-10-16 14:47:52
【问题描述】:

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

但是,我们已经考虑了一种不同的方法,我们正在将旧文章迁移到子域,并建立一个具有更好 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

我们遇到了一个问题,即 URL 包含 foo 字样,它被重定向到新域。

我们只想将http://olddomain/foo/ 重定向到http://sub.olddomain./foo/extra

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

【问题讨论】:

  • 在决定我们是否重定向时,是否有像 foo 这样确定的词来匹配?

标签: url-rewriting nginx rewrite


【解决方案1】:

您需要在您的网址中添加一些内容来识别它是旧网址还是新网址。如果你有东西,这很容易,我们可以回答这个问题。您给出的示例可以通过以下方式轻松解决:

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

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

但不要忘记搜索引擎和其他机器人!如果您计划将来为新内容使用原始 URL,请不要重定向任何内容,只需将页面传送到相同的位置即可。

【讨论】:

  • 感谢您的信息,我们实际上是将旧数据转移到子域并保留它。我们试图不丢失 18K 链接,并希望它们被重定向到新的子域。我会检查这个并回复感谢您的帮助:)
【解决方案2】:

是的,使用 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 2019-08-15
    • 2015-09-14
    • 1970-01-01
    • 2017-06-19
    • 2014-04-10
    相关资源
    最近更新 更多