由于在网站建设的前期没有规划好,选择了一个不方便用户记忆的域名,网站上线一段时间后,站长想对该域名进行更换操作,由于搜索引擎已经对旧的域名进行了收录,更换域名相当于重新建设了一个全新的网站,站长以前的努力算是付之东流了,为了把旧域名的权重引入到新的域名上来,可以使用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>
注意:虽然旧域名不使用了,但是你必须把旧域名也要绑定在新域名的主机上,并且在一段时间内,保证新域名可已使用,不存在欠费情况(这个是在自己主机上总结出来的,其它主机视情况而定)。