解决vue、springboot项目打包后刷新出现404的问题
1. 问题背景把vue项目打包后放入springboot的static文件夹里,手下访问首页,然后进行页面跳转都是没有问题的,但是假如在非首页的任何一个页面点击刷新,就会报错2. 问题原因主要问题在于:由vue开发的应用,采用的是SPA单页面模式传统的多页面模式,每一个页面对应一个html文件,当我们刷新页面的时候,会主动向后端请求对应的html文件,拿到html文件后渲染界面,但是SPA单页面模
·
1. 问题背景
把vue项目打包后放入springboot的static文件夹里,首先访问首页,然后在里面进行任何页面跳转都是没有问题的,但是假如在非首页的任何一个页面点击刷新,就会报错
2. 问题原因
主要问题在于:由vue开发的应用,采用的是SPA单页面模式
- 传统的多页面模式,每一个页面对应一个html文件,当我们刷新页面的时候,会主动向后端请求对应的html文件,拿到html文件后渲染界面,但是SPA单页面模式只有一个index.html入口文件,后续的界面跳转都是通过js控制路由跳转实现的
- 比如,现在想直接访问
localhost:9999/login
界面,,像后台发送了html问价请求,然而后台并没有login.html这一个html文件,所以就会返回如下的错误,正确的做法应该是:当我们直接输入localhost:9999/login
路径时,先将页面重定向到localhost:9999/index.html
,然后通过js控制路由实现跳转
3. 问题的解决
在springboot的项目下新建一个error的package,再新建一个ErrorConfig的类,设置出现错误界面时重定向到index.html
package com.example.error;
import org.springframework.boot.web.server.ErrorPageRegistrar;
import org.springframework.boot.web.server.ErrorPage;
import org.springframework.boot.web.server.ErrorPageRegistry;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
@Component
public class ErrorConfig implements ErrorPageRegistrar {
@Override
public void registerErrorPages(ErrorPageRegistry registry) {
ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/index.html");
registry.addErrorPages(error404Page);
}
}
关于SPA可以看我的下一篇博客
更多推荐
已为社区贡献7条内容
所有评论(0)