首页 > 解决方案 > 将几乎所有请求重定向到 index.html

问题描述

我正在创建一个 Web 应用程序,我使用 Vue 作为前端,使用 Spring Boot 作为后端。/Spring Boot 在和处提供 index.html /index.html,但我希望它也可以在其他 URL 处提供,例如/account,这反过来将被 Vue 的路由器检测到并显示正确的页面。

此外,我还有一些我不想提供 index.html 的其他 URL。它们都以 开头/api,这意味着这是 Vue 应用程序发送请求的地方。

任何帮助将不胜感激。谢谢。

标签: spring-bootvue-router

解决方案


您要做的就是所谓的 SPA(单页应用程序)。为了实现这一点,您需要做两件事:

  1. 告诉 vue-router 使用 HTML5 历史推送:https ://router.vuejs.org/guide/essentials/history-mode.html#example-server-configurations
  2. 告诉 SpringBoot 在找不到相关路由时提供 index.html。这是关于如何使用 NoHandlerFoundException 的处理程序的一个很好的指南:https ://medium.com/@kshep92/single-page-applications-with-spring-boot-b64d8d37015d

我必须警告您:当您在第 1 步中配置历史模式时,单击某些东西,看起来您的 SPA 已经在工作(没有 # 号)。请注意,这是一种错觉。Vue-router 告诉浏览器 url 应该是什么样子,但是当你刷新页面时,服务器会返回 404。你还必须配置第 2 步。


推荐阅读