Перенаправлення базової URL-адреси Tomcat


79

Використання кота, як я отримую запит на http://www.mydomain.com перенаправити http://www.mydomain.com/somethingelse/index.jsp ? мені навіть не вдалося отримати index.html для відображення з http://mydomain.com .


чи є причина .htaccess чи isapi не працював?
Нона Урбіз

5
@NonaUrbiz: чи не є http-сервер .htaccess Apache специфічним і не працює з Tomcat?
Тім Бюте,

Будь-хто інший Tomcat, здається, не рекомендує його переглядати свої документи - wiki.jenkins-ci.org/display/JENKINS/…
KCD

Відповіді:


24

Назвіть свій веб-додаток WAR “ROOT.war” або папку “ROOT”


Цей підхід викликає багато проблем під час роботи на локальному, а потім розгортання програми на декількох серверах. Особливо, якщо у вас є кілька проектів, які будуть розгорнуті на різних серверах, і кожен може бути ROOT на своїх серверах.
zookastos

111

Ви можете зробити це: Якщо ваша установка tomcat встановлена ​​за замовчуванням, і ви не внесли жодних змін, тоді війна за замовчуванням буде ROOT.war. Таким чином, щоразу, коли ви зателефонуєте http://yourserver.example.com/, він викличе index.htmlабо index.jspваш стандартний файл WAR. Внесіть наступні зміни у свою webapp/ROOTпапку для перенаправлення запитів на http://yourserver.example.com/somewhere/else:

  1. Відкрийте webapp/ROOT/WEB-INF/web.xml, видаліть будь-яке зіставлення сервлетів за допомогою шляху /index.htmlабо /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

Це слід виправити зараз, я також виправив деякі інші речі.
reinierpost

Java не працювала для мене, тому я використовував index.html із переспрямуванням html. stackoverflow.com/questions/5411538/redirect-from-an-html-page
Jaapyse

18

Погляньте на UrlRewriteFilter, який по суті є реалізацією mod_rewrite на основі Java.

Вам потрібно буде витягти його в ROOTпапку під папкою Tomcat webapps; потім ви можете налаштувати переспрямування на будь-який інший контекст у своєму 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
Едд,

@AdrianRM "це не спосіб зробити", то який правильний шлях?
Ед rieрібель

Вірусний Пател і ChssPly76 є як дійсні відповіді: stackoverflow.com/a/1363781/208576 stackoverflow.com/a/1363685/208576
AdrianRM

Це працювало у мене, поки я не ввімкнув HTTPS. Переключено на, <% response.sendRedirect("/some/where"); %>і зараз це працює з HTTPS.
Міхал Мацей Галушка

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.