Перезапись URL-адреса Tomcat

хотел бы обратиться за помощью в отношении перезаписи URL для Tomcat9.

Я разработал веб-приложение с использованием J2EE и MVC.

Текущий URL-адрес для доступа в Интернет:

http://www.example.com:8080/MyApp/App/login.html 

(Login.html — это мой index.html по умолчанию)

Чего я надеюсь достичь, так это получить http://www.example.com:8080/login.html Это означает, что для каждой страницы структура MyApp/App будет скрыта от URL-адреса.

Я исследовал переписывание URL-адресов, но меня смущают используемые регулярные выражения. Например, я нашел следующий фрагмент, но не совсем уверен, что означает вторая строка RewriteRule. Первая строка, вероятно, означает игнорировать файлы css, img, js.

RewriteCond %{REQUEST_URI} ^/(css|img|js|partials|rest|favicon).*$
RewriteRule ^.*$ - [L]

Спасибо вам за помощь.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
339
1

Ответы 1

Похоже, вы используете Apache для перезаписи URL-адресов. Почему бы вам просто не поместить login.html в корень вашего веб-приложения? Кто решил, что это должно быть в MyApp/App? Я думаю, что, возможно, MyApp исходит из вашего файла WAR, а App — это точка монтирования сервлета или что-то в этом роде, верно? Вы можете избавиться от пути WAR, назвав файл ROOT.WAR, но есть и другие способы. Чтобы избавиться от приложения, вы можете смонтировать свой сервлет на «/» или (если ваша структура поддерживает это) использовать фильтр, а не сервлет для обслуживания ваших запросов.

Включенное вами правило перезаписи (это всего лишь одно правило) говорит, что если URL-адрес запроса начинается с css, img и т. д. (регулярное выражение RewriteCond), то ничего не делайте (вот что означает «-») и прекратите оценку перезаписи правила ([L] что означает «последний»). Это не кажется очень полезным для вашей ситуации, но это, вероятно, исключение: после него есть другие правила, которые мы хотим применить, и это предназначено для того, чтобы избежать перезаписи нескольких путей (css, img и т. что мы хотим оставить в покое.

Привет, я уже пытался развернуть свое приложение как ROOT.war на своем сервере. Однако, когда я пытался войти в систему, другие функции ломались, и я вообще не мог войти в систему.

ATYS 11.03.2019 14:48

Есть ли части вашего приложения, которые предполагают, что путь будет MyApp/App? Если это так, эти части сломаются, даже если вы перепишете URL-адреса. Я рекомендую заставить это работать без перезаписи URL-адресов, потому что перезапись URL-адресов если вам это действительно не нужно просто добавит некоторую нежелательную дополнительную сложность вашему приложению.

Willis Blackburn 11.03.2019 14:52

Да, на самом деле для многих других страниц требуется MyApp/App. потому что есть функция, которая фактически генерирует отчет в формате PDF из URL-адреса. Как я могу заставить это работать без перезаписи URL?

ATYS 11.03.2019 14:53

Вам в значительной степени придется пройти через свое приложение и исправить части, которые зависят от пути MyApp/App. Внесение изменений в каждый экземпляр будет простым, однако может потребоваться приложить некоторые усилия, чтобы найти все затронутые функции.

Willis Blackburn 11.03.2019 15:02

Согласно вашему руководству, в нем упоминается развертывание войны как ROOT.war. Однако мне также нужно удалить корневую папку? Как мне это сделать на сервере? Предполагая, что я использую CentOS 6 VPS

ATYS 11.03.2019 15:07

Что означает «удалить корневую папку»?

Willis Blackburn 11.03.2019 16:00

Согласно ссылке, которую вы указали выше, в ней упоминалось... «Первый вариант очень прост: нам просто нужно удалить папку /ROOT/ по умолчанию в $CATALINA_HOME\webapps, переименовать наш ExampleApp.war в ROOT.war и развернуть Это."

ATYS 11.03.2019 16:26

Другие вопросы по теме