Nginx 301转向之:旧域名转换到新域名,内容结构平滑转移

环境:Nginx 1.2

脚本:from 军哥

工程描述: 原有域名:pt.domain.com和ru.domain.com 和www.domain.com 三个站点资源一样,url结构一样,只是pt和ru是葡萄牙语和俄语(页面翻译了,但url仍旧和www.domain.com一样)

需求:废弃pt.domain.com和ru.domain.com,原有被收录的页面使用301跳转到www.domain.com

解决方案即步骤

  1. NS解析修改pt.domain.com和ru.domain.com 均指向www.domain.com 同一ip;
  2. www.domain.com所在服务器上增加虚拟主机pt.domain.com和ru.domain.com ,如原来就有无需增加,逐一修改各虚拟主机配置conf文件,自绑定的根目录与www.domain.com相同(即多个域名绑定到同一根目录);
  3. 更新conf文件后,重新启动nginx或使 reload命令使配置生效;
  4. www.domain.com所在服务器上修改站点根目录的.htaccess,加上如下语句:

    RewriteCond %{HTTP_HOST} ^pt.domain.com [NC,OR]
    RewriteCond %{HTTP_HOST} ^ru.domain.com [NC]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

    覆盖原来.htaccess文件即可;

  5. 清空站点缓存;
  6. 完成

检查google当中原来收录的pt.domain.com和ru.domain.com页面已经平滑转向到www.domain.com (eg:原来pt.domain.com/abc.html 自动跳转到www.domain.com/abc.html

此种nginx 301转向设定的适用场景:

  • 多个域名绑定同一个网站
  • 新旧域名更替(不影响google收录和原有权重)
  • nginx+drupal 7
分类: