浏览 9978 次
锁定老帖子 主题:tomcat部署的项目如何实现301跳转
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-05-19
如: 在浏览器中输入 test.com 301跳转到 http://www.test.com怎么做,tomcat貌似不能直接放.htaccess 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-05-20
前端放nginx或apache,将jsp代理至tomcat上。
在nginx或apache中实现301. |
|
返回顶楼 | |
发表时间:2012-05-23
刚好最近做了这个功能。 前提是系统是用Tomcat直接对外的,前面没有Apache或者Nginx,否则请参考 hunkguo 兄的建议。 我的实现方式是用Filter来实现的,Tomcat没有这个配置301重定向的。
附上Filter的核心代码,希望对你有帮助:
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException { String hostName = "http://"+req.getServerName(); if(hostName.startsWith("http://test.com")) { 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("http://test.com", "http://www.test.com"); response.setHeader( "Location", requestUrl + queryString); response.setHeader( "Connection", "close" ); }else { filterChain.doFilter(req, resp); } } |
|
返回顶楼 | |
发表时间:2012-05-24
Tony_Qiu 写道
刚好最近做了这个功能。 前提是系统是用Tomcat直接对外的,前面没有Apache或者Nginx,否则请参考 hunkguo 兄的建议。 我的实现方式是用Filter来实现的,Tomcat没有这个配置301重定向的。
附上Filter的核心代码,希望对你有帮助:
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException { String hostName = "http://"+req.getServerName(); if(hostName.startsWith("http://test.com")) { 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("http://test.com", "http://www.test.com"); response.setHeader( "Location", requestUrl + queryString); response.setHeader( "Connection", "close" ); }else { filterChain.doFilter(req, resp); } }
不大推荐这么做,容器的层次host-context-wrapper, 使用filter其实是在wrapper层完成的,但是上述跳转需求在host层就已经能决定了。可以看一下我的博客。 |
|
返回顶楼 | |