Я использую функцию маршрутизации Angular в своем приложении Angular 6.0.5.Следовательно, в моем приложении есть пути, такие как:
http://localhost:8080/area
http://localhost:8080/barn
http://localhost:8080/tower
Запускмое приложение, использующее ng serve
, работает хорошо.Я могу напрямую ввести адрес, такой как http://localhost:8080/barn
, в браузер, и он загрузит приложение и перейдет в соответствующее место в приложении.
После создания приложения я скопирую весь контент /dist/
вJava WebApplication, который приводит к WAR после компиляции.
Для его сборки я использую ng build --prod --build-optimizer --base-href=/myappdir/
Когда я запускаю WAR на сервере приложений, таком как Wildfly, я могу успешно перейти по URL-адресу http://localhost:8080/myappdir/
и загрузите приложение.Нажатие на некоторую кнопку маршрутизации в приложении также успешно изменяет URL-адрес, например, http://localhost:8080/barn
, но если я сам наберу в браузере URL-адрес http://localhost:8080/barn
и затем нажму клавишу ввода, я получаю сообщение об ошибке, что страница не может быть загружена.
Если я запускаю приложение Angular, которое использует функциональность маршрутизации Angular на веб-сервере, таком как Nginx, я должен указать веб-серверу указать на файл index.html
, даже если URL запрашивает другой файл.Так что с Nginx это будет сделано с конфигурацией , например: try_files $uri $uri/ =404;
.Поэтому я думаю, что проблема в файле WAR та же.
Что я должен настроить в файле WAR, чтобы он указывал на файл index.html
?