此前维护的一个网站需要变更域名,所以要对其进行域名跳转设置..收集了一下资料发现,这一个原以为"简单"的一个跳转,还是有点没关注过的"学问"..
接触过Http协议的都知道,返回头中都有一个status的字段,用来标示返回信息的一些状态..比如我们熟识的200,404,500等等..这其中还有一个比较常见的是302重定向,浏览器接收到这个返回值,识别出这个302重定向状态,就会读取头信息中的Location字段中包含的重定向网址,转而访问这个新地址..
听起来这个302重定向和我们需求的域名跳转有点像,但是这里注意一个问题,我们的网站是有一定权重之类的标示网站的访问量等数据的,如果我们换用新域名后,这类信息就丢失了,所以如果简单的使用302重定向实现跳转,那么我们网站的权重等等都得重新再来,这显然不合算的..
因此Http中还有一个类似的跳转状态,301永久跳转,这个表示当前页面永久跳转到新页面,原网站的权重等等信息也会直接继承到新网站上去..这个才是我们换域名,指引用户访问新域名,保持网站之前的权重等信息所采用的跳转方法..
此处举例2中jsp种的简单实现方法:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<% response.setStatus(301); response.setHeader( “Location”, “http://www.ahwebs.com/” ); response.setHeader( “Connection”, “close” ); %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String servername=request.getServerName(); String serverPath=request.getServletPath(); String addres="http://www.baidu.com"; response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); response.setHeader("Location",addres); %>