хотел бы обратиться за помощью в отношении перезаписи 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]
Спасибо вам за помощь.




Похоже, вы используете Apache для перезаписи URL-адресов. Почему бы вам просто не поместить login.html в корень вашего веб-приложения? Кто решил, что это должно быть в MyApp/App? Я думаю, что, возможно, MyApp исходит из вашего файла WAR, а App — это точка монтирования сервлета или что-то в этом роде, верно? Вы можете избавиться от пути WAR, назвав файл ROOT.WAR, но есть и другие способы. Чтобы избавиться от приложения, вы можете смонтировать свой сервлет на «/» или (если ваша структура поддерживает это) использовать фильтр, а не сервлет для обслуживания ваших запросов.
Включенное вами правило перезаписи (это всего лишь одно правило) говорит, что если URL-адрес запроса начинается с css, img и т. д. (регулярное выражение RewriteCond), то ничего не делайте (вот что означает «-») и прекратите оценку перезаписи правила ([L] что означает «последний»). Это не кажется очень полезным для вашей ситуации, но это, вероятно, исключение: после него есть другие правила, которые мы хотим применить, и это предназначено для того, чтобы избежать перезаписи нескольких путей (css, img и т. что мы хотим оставить в покое.
Есть ли части вашего приложения, которые предполагают, что путь будет MyApp/App? Если это так, эти части сломаются, даже если вы перепишете URL-адреса. Я рекомендую заставить это работать без перезаписи URL-адресов, потому что перезапись URL-адресов если вам это действительно не нужно просто добавит некоторую нежелательную дополнительную сложность вашему приложению.
Да, на самом деле для многих других страниц требуется MyApp/App. потому что есть функция, которая фактически генерирует отчет в формате PDF из URL-адреса. Как я могу заставить это работать без перезаписи URL?
Вам в значительной степени придется пройти через свое приложение и исправить части, которые зависят от пути MyApp/App. Внесение изменений в каждый экземпляр будет простым, однако может потребоваться приложить некоторые усилия, чтобы найти все затронутые функции.
Согласно вашему руководству, в нем упоминается развертывание войны как ROOT.war. Однако мне также нужно удалить корневую папку? Как мне это сделать на сервере? Предполагая, что я использую CentOS 6 VPS
Что означает «удалить корневую папку»?
Согласно ссылке, которую вы указали выше, в ней упоминалось... «Первый вариант очень прост: нам просто нужно удалить папку /ROOT/ по умолчанию в $CATALINA_HOME\webapps, переименовать наш ExampleApp.war в ROOT.war и развернуть Это."
Привет, я уже пытался развернуть свое приложение как ROOT.war на своем сервере. Однако, когда я пытался войти в систему, другие функции ломались, и я вообще не мог войти в систему.