Tomcat 404页面跳转的方法分享
时间:2014-09-15 03:23 来源:linux.it.net.cn 作者:it
Tomcat 404页面跳转
某系统改版后,旧版的系统的访问链接已经无效,但有一些路径已经被搜索引擎收录,所以当用旧的链接访问系统时会出现404页面。
用户在用旧链接访问时如果出现404页面则将页面跳转到首页,实现这个需求有多种方式,当时考虑了两种方案:
一、在nginx上配置404页面跳转。由于修改nginx配置需要联系运维帮忙,所以考虑在tomcat里进行实现。(tomcat我们有权限操作)
nginx配置404跳转,请参考:
二、在tomcat中实现
1)修改对应项目的WEB-INF/web.xml文件,在web.xml中添加:
复制代码代码示例:
<error-page>
<error-code>404</error-code>
<location>404Redirect.html</location>
</error-page>
2)在404Redirect.html中写入如下代码
复制代码代码示例:
<html>
<head>
<meta http-equiv="refresh" content="0; url=/"/>
</head>
</html>
开始测试,chrome和firefox均符合期望,IE10上测试依然还是404页面。
后来发现IE中有一项设置可以阻止refresh跳转。
所以将404Redirect.html修改为通过js跳转,如下
复制代码代码示例:
<html>
<head>
<script type="text/javascript">
window.location.href = "/";
</script>
</head>
</html>
经测试,IE10上依然不行,还是404页面。但通过调试,发现响应正文部分确实是我的代码,却没有显示。
后来通过在google发现IE浏览器在返回状态为404的时候,如果页面内容长度小于512bytes,它会用浏览器自己的错误页面代替我设置的404Redirect.html。
修改后的404Redirect.html代码:
复制代码代码示例:
<html>
<head>
<script type="text/javascript">
window.location.href = "/";
</script>
</head>
<body style="display:none">
body中的内容对用户没有任何实际意义,它存在的唯一目的就是让响应内容长度大于512bytes,
以此骗过“聪明”的IE。
IE浏览器在返回状态为404的时候,如果页面内容长度小于512bytes,它会用浏览器自己的默认错误页面代替响应页面的内容。
</body>
</html>
最后测试下,chrome、firfox、IE等浏览器均正常。
(责任编辑:IT)
Tomcat 404页面跳转
某系统改版后,旧版的系统的访问链接已经无效,但有一些路径已经被搜索引擎收录,所以当用旧的链接访问系统时会出现404页面。 一、在nginx上配置404页面跳转。由于修改nginx配置需要联系运维帮忙,所以考虑在tomcat里进行实现。(tomcat我们有权限操作) nginx配置404跳转,请参考:
二、在tomcat中实现
复制代码代码示例:
<error-page>
<error-code>404</error-code> <location>404Redirect.html</location> </error-page>
2)在404Redirect.html中写入如下代码
复制代码代码示例:
<html>
<head> <meta http-equiv="refresh" content="0; url=/"/> </head> </html>
开始测试,chrome和firefox均符合期望,IE10上测试依然还是404页面。
复制代码代码示例:
<html>
<head> <script type="text/javascript"> window.location.href = "/"; </script> </head> </html>
经测试,IE10上依然不行,还是404页面。但通过调试,发现响应正文部分确实是我的代码,却没有显示。
修改后的404Redirect.html代码:
复制代码代码示例:
<html>
<head> <script type="text/javascript"> window.location.href = "/"; </script> </head> <body style="display:none"> body中的内容对用户没有任何实际意义,它存在的唯一目的就是让响应内容长度大于512bytes, 以此骗过“聪明”的IE。 IE浏览器在返回状态为404的时候,如果页面内容长度小于512bytes,它会用浏览器自己的默认错误页面代替响应页面的内容。 </body> </html> 最后测试下,chrome、firfox、IE等浏览器均正常。 |