Перенаправление базового 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файле конфигурации.

ЧссПлы76
источник
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