域名301配置

简介:

随着技术的更新迭代,现在网站也越来越多,但是这样也会出现一个问题,如果一个老的网站并不能很好的支持这个平台的时候,我们这时候想着要改造这个平台、但是代码越来越多,架构越来越臃肿的时候,我们不得不放弃该平台,而去开发一个新的平台,问题虽然解决了,但是好多客户并不知道新网址的渔民更替,所以会对单位造成很大损失,这时会有一个新的名词叫做301。

什么是301重定向?

301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。

什么情况下需要301重定向?

1.网站更换域名时,通过301永久重定向将旧域名重定向至新域名,挽回流量损失和SEO;
2.如果你有多个闲置域名时需要指向同一网站时,可以通过301永久重定向实现;
3.你打算实现网址规范化,例如:不带www的域名和带www的域名,实现网址的统一。

如何实现301从定向?

1. java过滤器

过滤器实现301的过程大致如下。
1.首页我们编写一个过滤器类然后实现Filter,并重写他的三个方法(init、doFilter、、destory)。
2.获取需要的请求进行替换,然后把相应头跟状态码进行修改。
3.代码大致如下。
4.最后在web.xml中记得一个过滤器
UserFilter com.zerdoor.util.UserFilter UserFilter /*

代码如下

package com.zerdoor.util;
import org.apache.commons.lang.StringUtils;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class UserFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {

}

@Override

public void doFilter(ServletRequest req, ServletResponse resp,FilterChain filterChain) throws IOException, ServletException {
    String hostName = "http://" + req.getServerName();
    HttpServletResponse response = (HttpServletResponse) resp;
    HttpServletRequest httpRequest = (HttpServletRequest) req;
    if (hostName.startsWith("http://iphytc.com")) {//如果请求旧域名
        //String queryString = (httpRequest.getQueryString() == null ? "": "?" + httpRequest.getQueryString());
        System.out.println("//处理不带www的域名==>>");
        response.setStatus(301);
        String requestUrl = httpRequest.getRequestURL().toString();
        requestUrl = requestUrl.replace("http://iphytc.com","http://zgzhk.com");//把旧域名替换为新的域名
        response.setHeader("Location", requestUrl);
        response.setHeader("Connection", "close");
        response.setHeader("Cache-Control","no-cache");
        response.setHeader("Pragma","No-cache");
        response.setHeader("Content-Type","text/html;charset=utf-8");
        response.setHeader("Content-Language","zh-CN");
        response.setHeader("Transfer-Encoding","chunked");
        response.setHeader("Expires","Thu, 01 Jan 1970 00:00:00 GMT");
    }if(hostName.startsWith("http://www.iphytc.com")){//处理带www的域名
        System.out.println("//处理带www的域名-->>");
        response.setStatus(301);
        //获取请求界面的路径
        String a=httpRequest.getRequestURI();
        if(a.contains(".css") || a.contains(".png")|| a.contains(".jpg")){
            //如果发现是css或者js文件,直接放行
            System.out.println("=======================<<<==静态文件=>>>======================");
            filterChain.doFilter(httpRequest, response);
        }else{
            String requestUrl = httpRequest.getRequestURL().toString();
            System.out.println("请求iphytc的地址requestUrl是: "+requestUrl);

            String param = httpRequest.getQueryString();
            System.out.println("param的参数是: "+param);
            String requestUrlLast = httpRequest.getRequestURL().toString()+ (StringUtils.isBlank(httpRequest.getQueryString())?"":("?"+httpRequest.getQueryString())); //请求参数;
            //response.setHeader("Location", "http://www.zgzhk.com");//替换成没有www的域名
            Pattern p = Pattern.compile("http://www.iphytc.com");
            //String str =  "http://www.iphytc.com/typeServerLevelController/serverList.html";
            String str = requestUrlLast;
            Matcher m = p.matcher(str);
            String tmp = m.replaceAll("http://www.zgzhk.com");
            System.out.println("替换后的请求是========》》》》:"+tmp);
            response.setHeader("Location", tmp);//替换成没有www的域名
            response.setHeader("Connection", "close");
            response.setHeader("Cache-Control","no-cache");
            response.setHeader("Pragma","No-cache");
            response.setHeader("Content-Type","text/html;charset=utf-8");
            response.setHeader("Content-Language","zh-CN");
            response.setHeader("Transfer-Encoding","chunked");
            response.setHeader("Expires","Thu, 01 Jan 1970 00:00:00 GMT");
            filterChain.doFilter(req, resp);
            System.out.println("替换后的请求进行放行");
        }
    }
    else {
        System.out.println("当前http://www.zgzhk.com请求地址是:"+httpRequest.getRequestURL().toString()+ (StringUtils.isBlank(httpRequest.getQueryString())?"":("?"+httpRequest.getQueryString())));
        filterChain.doFilter(req, resp);
    }
}
@Override
public void destroy() {
}}

你可能感兴趣的:(域名301配置)