网站www和springboot的301重定向实现

  • 2019-04-17
  • 浏览 (1524)

一、加www和不加www的区别

很多网站在打开时,地址栏里的域名有的带有“www.”,而有的网站前面则没有带“www.”,有些网站可以用这两个域名都能访问。

不加“www.”的域名是主网站也称为裸域,加上“www.”的域名,就相当于是一个二级域名,从优化的角度来讲,加上“www.”就会分散主网站的权重。

加上“www.”比较符合咱们国人的习惯,分散权重只是一小部分的,毕竟权重分来分去还是分在你的网站上。最重要的就是多做一些高质量的反链。

裸域的cookie的作用域比较大,如果seaxiang.com使用裸域,那么frp.seaixang.com,foo.seaxaing.com都会带上seaxiang.com里设置的cookie。

二、怎样选择

可以看到现在很多大网站同时提供裸域和www访问。比如访问baidu.com会跳转到www.baidu.com。我们也可以实现这种跳转方式。

三、springboot实现301跳转

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

/**
 * 裸域请求301转发,优化seo
 */
@Component
public class WWWIntercepter implements HandlerInterceptor {
    private String site = "http://seaxiang.com";

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if (request.getRequestURL().indexOf(site) == 0) {
            //以http://seaxiang.com 域名开头的请求全部301跳转以https://www.seaxiang.com开头
            String address = (request.getRequestURL() + "").replaceAll(site, "https://www.seaxiang.com");
            response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
            response.setHeader("Location", address);
        }
        return true;
    }
}
0  赞