history模式前端路由部署后访问/刷新页面404问题

前端路由 实际是路由与组件的映射表
访问任何路径,服务器只需要响应index.html (单页面应用)
浏览器根据不同路由 匹配要渲染的内容

刷新操作时候: 浏览器会带着地址栏路由请求服务器返回相应地静态资源
如果没有找到对应的资源 返回 404

配置nginx:

location / {
    root /...
    # vue工程的路由是history模式
    try_files $uri $uri/ /index.html; // ** 重点加上这个配置
    index index.html index.html
}

前端 HTML5 History API

historyApiFallback

historyApiFallback 主要是用来解决HTML5 History API,访问服务器,返回404错误问题

问题

  1. 在路由跳转之后,进行页面刷新时,返回404错误
  2. 通过页面的前端路由访问页面内容,返回404

配置参考webpack 配置 devServer -> historyApiFallback
boolean类型: 默认为false
设置为true时,任何服务器404 response 都会返回index.html页面
对象类型: rewrites 配置多个匹配
参考 connect-history-api-fallback

配置多个页面匹配

devServer: {
    historyApiFallback: {
      rewrites: [
        { from: /^/$/, to: 'index.html' },
        { from: /^/test/, to: 'test.html' }
      ]
    }
}

cli 使用
开启: webpack serve --history-api-fallback
禁用: webpack serve --no-history-api-fallback

serve webpack-dev-server

vue/cli项目中默认配置了true

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>