Tomcat基本URL重定向


79

使用tomcat,如何获得请求http://www.mydomain.com重定向到http://www.mydomain.com/somethingelse/index.jsp?我什至没有设法从http://mydomain.com上显示index.html 。


.htaccess或isapi无法正常工作吗?
诺娜·乌尔比斯

5
@NonaUrbiz:.htaccess不是Apache HTTP服务器专用的,并且不适用于Tomcat吗?
蒂姆·布斯(TimBüthe)2011年

对于其他任何人,Tomcat似乎都不推荐它,请参阅他们的文档-wiki.jenkins-ci.org/display/JENKINS/…–
KCD

Answers:


24

将您的Web应用程序WAR命名为“ ROOT.war”或包含文件夹“ ROOT”


在本地上工作,然后将应用程序部署到多台服务器时,这种方法会导致很多问题。特别是如果您有多个项目要部署在不同的服务器上,并且每个项目都可以在其自己的服务器上成为ROOT。
zookastos19年

111

您可以执行以下操作:如果您的tomcat安装是默认的,并且您没有进行任何更改,则默认的war将是ROOT.war。因此,无论何时调用http://yourserver.example.com/,它都会调用默认WAR文件的index.htmlindex.jsp。在webapp/ROOT文件夹中进行以下更改,以将请求重定向到http://yourserver.example.com/somewhere/else

  1. 打开webapp/ROOT/WEB-INF/web.xml,删除所有带有path/index.html或的servlet映射/index.jsp,然后保存。

  2. 删除webapp/ROOT/index.html(如果存在)。

  3. webapp/ROOT/index.jsp使用以下内容创建文件:

    <% response.sendRedirect("/some/where"); %>
    

    或者如果您要定向到其他服务器,

    <% response.sendRedirect("http://otherserver.example.com/some/where"); %>
    

而已。


7
仅需要步骤2。经测试在Tomcat 7
dustmachine

11
sendRedirect命令是我所需的全部。index.jsp仅包含:<%response.sendRedirect(“ / jasperserver”); %>
安迪·伯顿

3
不要忘记在任何jsp脚本之前添加<%和%>
Jasim Muhammed 2014年

现在应该修复,我还修复了其他一些东西。
reinierpost

Java不适用于我,因此我将index.html与html重定向一起使用。stackoverflow.com/questions/5411538/redirect-from-an-html-page
Jaapyse

18

看一看UrlRewriteFilter,它本质上是Apache mod_rewrite的基于Java的实现。

您需要将其解压缩到ROOTTomcatwebapps文件夹下的文件夹中。然后,您可以在其WEB-INF/urlrewrite.xml配置文件中配置重定向到任何其他上下文。


UrlRewriteFilter快速且对我来说效果很好。该手册有很多不错的选择,这篇博客文章也有一些不错的信息。
cwd

11

经过测试和工作程序:

转到文件路径 ..\apache-tomcat-7.0.x\webapps\ROOT\index.jsp

删除全部内容或在index.jsp的顶部声明以下代码行

<% response.sendRedirect("http://yourRedirectionURL"); %>

请注意,在jsp文件中,您需要以<%开始上述行,并以%>结尾


8

我做了什么:

我在ROOT / index.jsp中添加了以下行

 <meta http-equiv="refresh" content="0;url=/somethingelse/index.jsp"/>

2
这可能会真正破坏您的分析数据,因为引荐将丢失。
sbichenko

这种方法的一个小好处是它可以进入index.html而不是index.jsp
Edd,2016年

@AdrianRM“这不是做到这一点的方法”,那么正确的方法是什么?
Ed Griebel '16


这对我一直有效,直到我启用了HTTPS。切换到<% response.sendRedirect("/some/where"); %>它,现在可以与HTTPS一起使用。
米哈尔马切伊Gałuszka

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.