Przekierowanie podstawowego adresu URL Tomcat

79

Jak za pomocą tomcat mogę uzyskać żądanie dotyczące http://www.mydomain.com przekierowania do http://www.mydomain.com/somethingelse/index.jsp ? nie udało mi się nawet uzyskać pliku index.html do wyświetlenia z http://mydomain.com .

Nathaniel Flath
źródło
czy istnieje powód, dla którego .htaccess lub isapi nie działają?
Nona Urbiz
5
@NonaUrbiz: czy .htaccess nie jest specyficzny dla serwera http Apache i nie działa z Tomcat?
Tim Büthe
Dla nikogo Tomcat nie wydają się polecić go zobaczyć swoje dokumenty - wiki.jenkins-ci.org/display/JENKINS/...
KCD

Odpowiedzi:

24

Nazwij swoją aplikację internetową WAR „ROOT.war” lub zawierającą folder „ROOT”

Lecieć jak po sznurku
źródło
Takie podejście powoduje wiele problemów podczas pracy na lokalnym, a następnie podczas wdrażania aplikacji na wielu serwerach. Szczególnie, jeśli masz wiele projektów, które mają zostać wdrożone na różnych serwerach, a każdy może być ROOT na swoich własnych serwerach.
zookastos
111

Możesz to zrobić: Jeśli twoja instalacja tomcat jest domyślna i nie wprowadziłeś żadnych zmian, domyślną wojną będzie ROOT.war. Zatem za każdym razem, gdy zadzwonisz http://yourserver.example.com/, wywoła index.htmllub index.jspz twojego domyślnego pliku WAR. Wprowadź następujące zmiany w swoim webapp/ROOTfolderze, aby przekierować żądania do http://yourserver.example.com/somewhere/else:

  1. Otwórz webapp/ROOT/WEB-INF/web.xml, usuń wszelkie mapowanie serwletów za pomocą ścieżki /index.htmllub /index.jspi zapisz.

  2. Usuń webapp/ROOT/index.html, jeśli istnieje.

  3. Utwórz plik webapp/ROOT/index.jspz następującą linią treści:

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

    lub jeśli chcesz przekierować na inny serwer,

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

Otóż ​​to.

Viral Patel
źródło
7
Potrzebny tylko krok # 2. Testowane na Tomcat 7.
dustmachine
11
Polecenie sendRedirect było wszystkim, czego potrzebowałem. index.jsp zawiera tylko: <% response.sendRedirect ("/ jasperserver"); %>
Andy Burton,
3
Nie zapomnij dodać <% i%> przed jakimkolwiek skryptem jsp
Jasim Muhammed
Powinien zostać teraz naprawiony, naprawiłem też kilka innych rzeczy.
reinierpost
Java nie działała u mnie, więc użyłem index.html z przekierowaniem HTML. stackoverflow.com/questions/5411538/redirect-from-an-html-page
Jaapyse
18

Przyjrzyj się UrlRewriteFilter, który jest zasadniczo opartą na Javie implementacją mod_rewrite Apache.

Będziesz musiał wyodrębnić go do ROOTfolderu znajdującego się w folderze Tomcat webapps; możesz następnie skonfigurować przekierowania do dowolnego innego kontekstu w jego WEB-INF/urlrewrite.xmlpliku konfiguracyjnym.

ChssPly76
źródło
UrlRewriteFilter działa szybko i dobrze dla mnie. Podręcznik ma kilka świetnych opcji, a ten wpis na blogu zawiera również dobre informacje.
cwd
11

Przetestowana i działająca procedura:

Przejdź do ścieżki pliku ..\apache-tomcat-7.0.x\webapps\ROOT\index.jsp

usuń całą zawartość lub zadeklaruj poniższe wiersze kodu na początku pliku index.jsp

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

Zauważ, że w pliku jsp musisz zaczynać powyższą linię od <% i kończyć%>

obaid
źródło
8

Co ja zrobiłem:

Dodałem następujący wiersz w pliku ROOT / index.jsp

 <meta http-equiv="refresh" content="0;url=/somethingelse/index.jsp"/>
Kevin
źródło
2
Może to naprawdę zepsuć dane analityczne, ponieważ skierowanie zostanie utracone.
sbichenko
Niewielką zaletą tej metody jest to, że można ją umieścić w pliku index.html zamiast index.jsp
Edd,
@AdrianRM "to nie jest sposób na zrobienie tego", więc jaki jest właściwy sposób?
Ed Griebel
Viral Patel i ChssPly76 to prawidłowe odpowiedzi: stackoverflow.com/a/1363781/208576 stackoverflow.com/a/1363685/208576
AdrianRM
To działało dla mnie, dopóki nie włączyłem HTTPS. Przełączono na <% response.sendRedirect("/some/where"); %>i teraz działa z HTTPS.
Michał Maciej Gałuszka