Redirección de URL base de Tomcat

79

Usando tomcat, ¿cómo obtengo una solicitud de http://www.mydomain.com para redirigir a http://www.mydomain.com/somethingelse/index.jsp ? Ni siquiera he logrado obtener un index.html para mostrar desde http://mydomain.com .

Nathaniel Flath
fuente
¿Hay alguna razón por la que .htaccess o isapi no funcionen?
Nona Urbiz
5
@NonaUrbiz: ¿no es el servidor http de .htaccess Apache específico y no funciona con Tomcat?
Tim Büthe
Para cualquier otra persona, Tomcat no parece recomendarlo, consulte sus documentos - wiki.jenkins-ci.org/display/JENKINS/…
KCD

Respuestas:

24

Nombra tu aplicación web WAR "ROOT.war" o la carpeta que contiene "ROOT"

flybywire
fuente
Este enfoque causa muchos problemas cuando se trabaja en local y luego se implementa su aplicación en varios servidores. Especialmente si tiene varios proyectos que se van a implementar en diferentes servidores, y cada uno puede ser ROOT en sus propios servidores.
zookastos
111

Puede hacer esto: Si su instalación de Tomcat es predeterminada y no ha realizado ningún cambio, entonces la guerra predeterminada será ROOT.war. Por lo tanto, cada vez que llame http://yourserver.example.com/, llamará al index.htmlo index.jspde su archivo WAR predeterminado. Realice los siguientes cambios en su webapp/ROOTcarpeta para redirigir las solicitudes a http://yourserver.example.com/somewhere/else:

  1. Abra webapp/ROOT/WEB-INF/web.xml, elimine cualquier asignación de servlet con la ruta /index.htmlo /index.jspy guarde.

  2. Eliminar webapp/ROOT/index.html, si existe.

  3. Crea el archivo webapp/ROOT/index.jspcon esta línea de contenido:

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

    o si desea dirigirse a un servidor diferente,

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

Eso es.

Patel viral
fuente
7
Solo se necesita el paso 2. Probado en Tomcat 7.
dustmachine
11
El comando sendRedirect era todo lo que necesitaba. index.jsp solo contiene: <% response.sendRedirect ("/ jasperserver"); %>
Andy Burton
3
No olvide agregar <% y%> antes de cualquier scriptlet jsp
Jasim Muhammed
Debería arreglarse ahora, también arreglé algunas otras cosas.
reinierpost
Java no me funcionaba, así que usé index.html con redirección html. stackoverflow.com/questions/5411538/redirect-from-an-html-page
Jaapyse
18

Eche un vistazo a UrlRewriteFilter, que es esencialmente una implementación basada en Java del mod_rewrite de Apache.

Deberá extraerlo en la ROOTcarpeta debajo de la carpeta de su Tomcat webapps; luego puede configurar redirecciones a cualquier otro contexto dentro de su WEB-INF/urlrewrite.xmlarchivo de configuración.

ChssPly76
fuente
UrlRewriteFilter es rápido y funcionó bien para mí. el manual tiene excelentes opciones y esta publicación de blog también tiene buena información.
cwd
11

Procedimiento probado y de trabajo:

Ir a la ruta del archivo ..\apache-tomcat-7.0.x\webapps\ROOT\index.jsp

elimine todo el contenido o declare las siguientes líneas de código en la parte superior del index.jsp

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

Tenga en cuenta que en el archivo jsp debe comenzar la línea anterior con <% y terminar con%>

obaid
fuente
8

Lo que hice:

Agregué la siguiente línea dentro de ROOT / index.jsp

 <meta http-equiv="refresh" content="0;url=/somethingelse/index.jsp"/>
Kevin
fuente
2
Esto realmente podría arruinar sus datos analíticos, ya que se perderá la referencia.
sbichenko
Un pequeño beneficio de este método es que puede ir en index.html en lugar de index.jsp
Edd
@AdrianRM "no es la forma de hacerlo", entonces, ¿cuál es la forma correcta?
Ed Griebel
Viral Patel y ChssPly76 son respuestas válidas: stackoverflow.com/a/1363781/208576 stackoverflow.com/a/1363685/208576
AdrianRM
Esto funcionó para mí hasta que habilité HTTPS. Se cambió <% response.sendRedirect("/some/where"); %>y ahora funciona con HTTPS.
Michał Maciej Gałuszka