SpringBoot+Vue2 History路由模式去掉路径中的#
在SpringBoot后端配置中,你需要配置一个拦截器,将所有的请求都重定向到你的index.html页面,这样就可以让Vue-router来处理路由,而不是后端。
以下是一个简单的SpringBoot拦截器配置示例:
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Component
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/{spring:/^(?!api).*$/}").setViewName("forward:/index.html");
}
}
这段代码会拦截所有不是以"/api"开头的路径,并将它们重定向到index.html页面。这样一来,你的Vue应用就能够处理路由,并且可以使用history模式而不带hash。
在Vue中,你需要确保Vue-router配置如下:
import Vue from 'vue';
import Router from 'vue-router';
Vue.use(Router);
const router = new Router({
mode: 'history',
routes: [
// 定义路由
]
});
export default router;
确保Vue-router的模式设置为'history',这样它就可以利用HTML5 History API来管理路由,而不是使用hash模式。
评论已关闭