我们的网站上存在数据库损坏,现在我们正在构建一个新数据库。
但是,我们考虑过不同的方法,我们将旧文章迁移到子域并构建具有更好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/foo
到http://sub.olddomain
答案 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。