我在前端有一个基于 Vue.js 的应用程序,在后端有一个基于 Spring Boot 的应用程序。
我的生产应用程序不在服务器的根目录中,而是localhost:8090/ui
中的子路径。这是我的 application.yml :
server:
port: 8090
servlet:
contextPath: /ui
我在assetsPublicPath: '/ui'
中设置了config/index.js
,所以我在index.html
中的所有引用都像/ui/static/...
根据Google Chrome浏览器,我的生产服务器成功返回了我的所有静态资产,例如localhost:8080/ui/static/images/example.png
,但是由于某种原因我看不到我的用户界面。
在将前端实现为单页应用程序时,我使用 WebAutoConfig 将服务器配置为将所有服务器重定向到index.html
,如下所示:
@Configuration
public class WebAutoConfig implements WebMvcConfigurer {
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/")
.setViewName("forward:/index.html");
}
}
我还使用mode: 'history'
中的router\index.js
属性。没有它,一切工作正常,但我不想在URL中使用丑陋的哈希,例如localhost:8090/ui/#/
。此外,即使启用了历史记录模式,但一切正常,但没有子路径,即contextPath: /
谢谢