Перенаправление базового URL Tomcat


79

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


Есть ли причина, по которой .htaccess или isapi не работают?
Нона Урбиз 01

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 07

11
Команда sendRedirect была всем, что мне было нужно. index.jsp просто содержит: <% response.sendRedirect ("/ jasperserver"); %>
Энди Бертон

3
Не забудьте добавить <% и%> перед любым скриптлетом jsp
Джасим Мухаммед

Должен быть исправлен сейчас, я также исправил некоторые другие вещи.
reinierpost

Java у меня не работала, поэтому я использовал index.html с перенаправлением html. stackoverflow.com/questions/5411538/redirect-from-an-html-page
Jaapyse

18

Взгляните на UrlRewriteFilter, который по сути является Java-реализацией Apache mod_rewrite.

Вам нужно будет распаковать его в ROOTпапку в папке Tomcat webapps; затем вы можете настроить перенаправления в любой другой контекст в его WEB-INF/urlrewrite.xmlфайле конфигурации.


UrlRewriteFilter работает быстро и хорошо работает для меня. в руководстве есть несколько отличных вариантов, и в этом сообщении в блоге также есть полезная информация.
cwd 02

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
Это может действительно испортить ваши данные аналитики, поскольку реферал будет потерян.
сбиченко

Одно небольшое преимущество этого метода в том, что он может быть помещен в index.html вместо index.jsp
Эдд

@AdrianRM "это не способ делать это", так как же правильно?
Эд Грибель

Ответы Viral Patel и ChssPly76 являются правильными: stackoverflow.com/a/1363781/208576 stackoverflow.com/a/1363685/208576
AdrianRM

У меня это работало, пока я не включил HTTPS. Переключился на <% response.sendRedirect("/some/where"); %>HTTPS, и теперь он работает.
Michał Maciej Gałuszka

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.