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 .


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”


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.


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.


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ć%>


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"/>

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.