301、302都是在HTTP中可以跳转网页的一种方法(区别为301是永久跳转、而302是临时跳转),而使用范围也非常广泛,例如当我们使用了新的域名,为了访客的体验和SEO优化,我们有时候就会使用301来对旧网站进行跳转。今天,“畅想资源”就来教大家如何在Nginx中实现301、302跳转之方法,而且这种方法还是可以跳转完整链接的哦!
实现后的效果
现假定旧域名为“www.domain-old.com”、新域名为“www.domain-new.com”,在加入本文所教的301/302跳转方法后可以实现以下效果:
- 访问“http://www.domain-old.com/”可以直接跳转至“http://www.domain-new.com/”
- 访问“http://www.domain-old.com/test/”可以直接跳转至“http://www.domain-old.com/test/”
- 【仅限301跳转】搜索引擎可正常搜录跳转后的结果(例如“http://www.domain-old.com/test/”等)
教学
1、首先登入网站服务器的SSH,然后使用 vim
或其它编辑命令进入你的Nginx的 .conf
文件
提示:该类文件通常位置为“/etc/nginx/nginx.conf”或者“/etc/nginx/vhost/”下的虚拟主机文件(一般以“[你的网站域名].conf”命名)
2、在进入编辑后,首先于 server_name
处加入原网站(需跳转的网站)的域名(例如“www.domain-old.com”)
1 2 3 4 5 6 7 8 9 |
server { listen 80; server_name www.domain-new.com www.domain-old.com; #server_name end index index.php; #index end #---OTHER OPTIONS--- } |
3、然后于 server_name
的下方添加以下代码,注意将 www.domain-new.com
和 www.domain-old.com
分别替换为你的新旧网站域名:
注意: rewrite
最后部分分两种不同的代码,即 permanent
代表“301永久跳转”,而 redirect
代表“302临时跳转”,只需选择其一使用即可!两种跳转在展现方式上无任何区别,但是302更容易被搜索引擎视为SPAM,而301则不会有这些问题!
1 2 3 4 5 6 7 8 9 10 11 12 13 |
server { listen 80; server_name www.domain-new.com www.domain-old.com; #server_name end if ($host ~* www.domain-old.com){ rewrite ^/(.*)$ http://www.domain-new.com/$1 permanent; #permanent 301 #rewrite ^/(.*)$ http://www.domain-new.com/$1 redirect; #redirect 302 } index index.php; #index end #---OTHER OPTIONS--- } |
4、现在将原域名解析到目前的服务器上,然后我们的301/302跳转也可以正常使用啦!
参考
凯凯的个人调试和结果
历史上的今天
2013年:360网站卫士和安全宝同时改版(16条评论)