java程序处理更换域名重定向

摘要

由于在网站建设的前期没有规划好,选择了一个不方便用户记忆的域名,网站上线一段时间后,站长想对该域名进行更换操作,由于搜索引擎已经对旧的域名进行了收录,更换域名相当于重新建设了一个全新的网站,站长以前的

由于在网站建设的前期没有规划好,选择了一个不方便用户记忆的域名,网站上线一段时间后,站长想对该域名进行更换操作,由于搜索引擎已经对旧的域名进行了收录,更换域名相当于重新建设了一个全新的网站,站长以前的努力算是付之东流了,为了把旧域名的权重引入到新的域名上来,可以使用301重定向来做。当用户访问旧域名的时候,就重定向到新的域名,如:

    访问旧的http://wgyblog.com将会定向到新域名it家园 (http://itwgy.com),对于php或者asp程序,所有的虚拟主机服务商都提供配置入口,只需要简单的操作就可以完成重定向,但是,如果你的网站是java程序,运行在tomcat上,你必须要在程序中进行重定向,并不是简单的配置可以完成的,下面是具体的操作。

在java中写一个过滤器,用过滤处理定向:

package com.wgy.web.shiro.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UserFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@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://a.com")) {//如果请求旧域名
//String queryString = (httpRequest.getQueryString() == null ? "": "?" + httpRequest.getQueryString());
response.setStatus(301);
String requestUrl = httpRequest.getRequestURL().toString();
requestUrl = requestUrl.replace("http://a","http://b.com");//把旧域名替换为新的域名
response.setHeader("Location", requestUrl);
response.setHeader("Connection", "close");
}if(hostName.startsWith("http://www.a.com")){//处理带www的域名
response.setStatus(301);
response.setHeader("Location", "http://b.com");//替换成没有www的域名
response.setHeader("Connection", "close");
}
else {
filterChain.doFilter(req, resp);
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}

web.xml配置:

 <filter>
  <filter-name>UserFilter</filter-name>
  <filter-class>com.wgy.web.shiro.filter.UserFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>UserFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

注意:虽然旧域名不使用了,但是你必须把旧域名也要绑定在新域名的主机上,并且在一段时间内,保证新域名可已使用,不存在欠费情况(这个是在自己主机上总结出来的,其它主机视情况而定)

IT家园
IT家园

网友最新评论 (0)