93

Using tomcat, how do I get a request for http://www.mydomain.example to redirect to http://www.mydomain.example/somethingelse/index.jsp? I haven't even managed to get an index.html to display from http://mydomain.example.

3
  • is there a reason .htaccess or isapi would not work? Commented Sep 1, 2009 at 17:15
  • 6
    @NonaUrbiz: isn't .htaccess Apache http server specific and does not work with Tomcat? Commented Nov 16, 2011 at 16:05
  • For anyone else Tomcat don't seem to recommend it see their docs - wiki.jenkins-ci.org/display/JENKINS/… Commented Mar 26, 2013 at 22:03

6 Answers 6

128

You can do this: If your tomcat installation is default and you have not done any changes, then the default war will be ROOT.war. Thus whenever you will call http://yourserver.example.com/, it will call the index.html or index.jsp of your default WAR file. Make the following changes in your webapp/ROOT folder for redirecting requests to http://yourserver.example.com/somewhere/else:

  1. Open webapp/ROOT/WEB-INF/web.xml, remove any servlet mapping with path /index.html or /index.jsp, and save.

  2. Remove webapp/ROOT/index.html, if it exists.

  3. Create the file webapp/ROOT/index.jsp with this line of content:

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

    or if you want to direct to a different server,

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

That's it.

Sign up to request clarification or add additional context in comments.

6 Comments

Only needed step #2. Tested on Tomcat 7.
The sendRedirect command was all that was needed for me. index.jsp just contains: <% response.sendRedirect("/jasperserver"); %>
Don't forget to add <% and %> before any jsp scriptlet
Should be fixed now, I also fixed some other things.
Java wasn't working for me, so I used index.html with html redirection. stackoverflow.com/questions/5411538/redirect-from-an-html-page
|
27

Name your webapp WAR “ROOT.war” or containing folder “ROOT”

1 Comment

This approach causes a lot of problems when working on local and then deploying your application to multiple servers. Specially if you have multiple projects going to be deployed on different servers, and each can be ROOT on their own servers.
19

Take a look at UrlRewriteFilter which is essentially a java-based implementation of Apache's mod_rewrite.

You'll need to extract it into ROOT folder under your Tomcat's webapps folder; you can then configure redirects to any other context within its WEB-INF/urlrewrite.xml configuration file.

1 Comment

UrlRewriteFilter is fast and worked well for me. the manual has some great options and this blog post also has some good info.
15

Tested and Working procedure:

Goto the file path ..\apache-tomcat-7.0.x\webapps\ROOT\index.jsp

remove the whole content or declare the below lines of code at the top of the index.jsp

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

Please note that in jsp file you need to start the above line with <% and end with %>

Comments

9

What i did:

I added the following line inside of ROOT/index.jsp

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

5 Comments

This might really screw up your analytics data, since the referral will be lost.
One small benefit of this method is it can go in index.html instead of index.jsp
@AdrianRM "it's not the way to do it", so what is the right way?
Viral Patel's and ChssPly76's are both valid answers: stackoverflow.com/a/1363781/208576 stackoverflow.com/a/1363685/208576
This worked for me until I have enabled HTTPS. Switched to <% response.sendRedirect("/some/where"); %> and it works with HTTPS now.
6

In Tomcat 8 you can also use the rewrite-valve

RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^/(.*)$         /somethingelse/index.jsp

To setup the rewrite-valve look here:

http://tonyjunkes.com/blog/a-brief-look-at-the-rewrite-valve-in-tomcat-8/

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.