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条评论)