网站在做域名解析时,经常会解析2个域名,即带www的和不带www的。这样做的目的是,当用户使用不带www的域名时,也可以正常访问你的网站。但是这样做的后果是,你站点主域名的pr值分散到其他几个URL上了。因为在搜索引擎看来,带www和不带www的URL是2个完全不同的URL,当它们指向同一个网站时,会让搜索引擎不懂应该选择哪一个URL作为主要的域名。
如果你用301重定向把其他几个URL如pinhuba.com转到www.pinhuba.com时,相应的PR也就集中在主域名:www.pinhuba.com上了。
下面老高教大家如何用servlet的filter技术来实现301重定向,当然pinhuba.com现在也是这样实现的。
package com.jeecms.common.web; 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 WwwFilter implements Filter { private String originUrl; private String targetUrl; public void init(FilterConfig filterConfig) throws ServletException { this.originUrl = filterConfig.getInitParameter("originUrl");//来源url this.targetUrl = filterConfig.getInitParameter("targetUrl");//目标url } public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { String hostName = req.getServerName(); if (hostName.startsWith(originUrl)) { HttpServletResponse response = (HttpServletResponse) resp; HttpServletRequest httpRequest = (HttpServletRequest) req; String queryString = (httpRequest.getQueryString() == null ? "" : "?" + httpRequest.getQueryString()); response.setStatus(301); String requestUrl = httpRequest.getRequestURL().toString(); requestUrl = requestUrl.replace(originUrl, targetUrl); response.setHeader("Location", requestUrl + queryString); response.setHeader("Connection", "close"); } else { chain.doFilter(req, resp); } } }
<filter> <filter-name>WwwFilter</filter-name> <filter-class>com.jeecms.common.web.WwwFilter</filter-class> <init-param> <param-name>originUrl</param-name> <param-value>pinhuba.com</param-value> </init-param> <init-param> <param-name>targetUrl</param-name> <param-value>www.pinhuba.com</param-value> </init-param> </filter> <filter-mapping> <filter-name>WwwFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)