前端/移动开发面试题更新 2026-08-05

请解释在使用 Vue Router 时,采用 history 模式后,刷新页面为何会报 404 错误?

前端/移动开发技术原理方案权衡问题排查VueVue Router

考察说明

考察对前端单页应用路由模式原理及部署配置的理解。

回答思路

  1. 【回答框架 1】Vue Router 的 history 模式基于 HTML5 History API,利用 pushState 和 replaceState 改变 URL 而不向服务器发送请求。当用户点击链接切换路由时,前端路由拦截并渲染对应组件,因此一切正常。
  2. 【回答框架 2】但当用户直接刷新页面(如浏览器刷新或输入 URL 访问)时,浏览器会向服务器发送请求,请求的路径是当前 URL。如果服务器没有配置对应的路由,例如默认只处理根路径或返回 index.html,就会返回 404。
  3. 【回答框架 3】解决方法是在服务器端配置 fallback,将所有未匹配到文件资源的请求重定向回 index.html(例如 Nginx 配置 try_files $uri $uri/ /index.html;Node.js 使用 connect-history-api-fallback),这样由前端路由接管并渲染对应页面。
  4. 【回答框架 4】需要注意,这种配置会将既有的静态资源文件(如 JS、CSS)仍然正常返回,但无法区分是否为真实文件,因此需要合理配置,避免吞掉真实 404 错误。
  5. 【关键点 1】history 模式依赖 HTML5 History API,前端控制路由。
  6. 【关键点 2】刷新时请求发往服务器,服务器默认不识别前端路由,导致 404。
  7. 【关键点 3】服务器需配置 fallback 重定向到 index.html。
  8. 【易错点 1】若服务器配置了错误的重定向顺序,可能影响静态资源加载。
  9. 【易错点 2】history 模式需要服务器支持,且在受控环境中使用。