首页 > 其他分享 >解决Vue中使用history路由模式出现404的问题

解决Vue中使用history路由模式出现404的问题

时间:2022-11-16 16:56:55浏览次数:60  
标签:index Vue html pub 404 router 路由 history

背景

vue中默认的路由模式是hash,会出现烦人的符号#,如http://127.0.0.1/#/
改为history模式可以解决这个问题,但是有一个坑是:强刷新、回退等操作会出现404。

Vue改用History路由模式

修改src/router/index.js

export default new Router({
  mode: 'history',            //改为history模式
  routes: [
    {
      path: '/pub',
      component:Empty
    }
  ]
})

解决History模式404的问题
原理:增加中间件的配置(如nginx),所有未匹配到的路由都返回index.html。
官方文档:https://router.vuejs.org/zh/guide/essentials/history-mode.html

这里介绍一种官方文档没有的,使用Golang的Gin框架解决404的问题。

router := gin.New()
router.Use(gin.Recovery())

// 注册静态文件
router.Static("/pub", "./pub")
router.Static("/static", "./pub/static")
router.LoadHTMLGlob("./pub/*.html")         //加载index.html文件

//处理首页的访问
router.GET("/", func(c *gin.Context) {
    c.Redirect(http.StatusFound, "./pub/index.html")
})

//【关键点】:把所有找不到路由的请求,都返回index.html
router.NoRoute(func(c *gin.Context) {
    c.HTML(http.StatusOK,"index.html",nil)
})

//启动http服务
router.Run()

关键是这行代码:

router.NoRoute(func(c *gin.Context) {
    c.HTML(http.StatusOK,"index.html",nil)
})

写在后面

既然所有找不到路由的请求都返回index.html,那真正404的请求就不会显示404了。
所以在vue的src/router/index.js中要这样设置

export default new Router({
  mode: 'history',            
  routes: [
    {
      path: '/pub',
      component:Empty
    },
    {
      path: '*',            //其他路由显示404
      component: NotFound,
    }
  ]
})

 


————————————————
版权声明:本文为CSDN博主「NetRookieX」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/NetRookieX/article/details/121448145

标签:index,Vue,html,pub,404,router,路由,history
From: https://www.cnblogs.com/zhangzhijian/p/16896484.html

相关文章

  • vue入门
    Vue入门 一、什么是Vue#Vue(读音/vjuː/)是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注......
  • 按需引入Ant Design Vue
     配置{"plugins":[["import",{"libraryName":"ant-design-vue","libraryDirectory":"es","style":"css"}]//`style:true`会加载less文件]......
  • 尚硅谷vue课程之模板语法
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content......
  • VUE3 elment-ui el-tabel遍历实现表格的自定义列【KEY值为列名】
    <template><div><el-table:data="resultTable"borderref="multipleTable"tooltip-effect="light"size="mini"><el-table-columntype="i......
  • Vue.js devtools插件点击Root失效或不显示数据问题的解决方法
    原文链接:https://blog.csdn.net/m0_59183852/article/details/126981557刚开始用这个插件,我就遇到了一个问题:使用该插件对代码进行调试的时候,发现如何点击<Root>都没有反......
  • 记一次postman没问题vue配置代理接口404问题
    注意是否配置了多个代理,接口路径是否和代理有重复名称!!!下图就会导致404原因解析:axios的请求url,不能包含有其他代理的名字......
  • vue-router
    路由理解:一个路由(route)就是一组映射关系(key-value),多个路由需要路由器(router)进行管理。前端路由:key是路径,value是组件。生活里的路由与路由器路由分类1.后端路......
  • 【前端面试】Vue面试题总结(持续更新中)
    由于已经有很多前辈深造VUE的某一块知识,所以我也是大树下好乘凉,进行总结与积累。就有这篇博客,希望对各位面试求职的同学有所帮助。注意:每题都附上链接并不是说要参考这个链......
  • Vue3的setup在el-tab中动态加载组件
    公司某项目需求在页面显示的组件是根据角色变化而变化的,在这个项目中我使用了elementplus的el-tabs来动态的显示这些组件,如下图所示数据内容大概是这样的在未使用setup......
  • vue3+Ts+Vite+ElementPlus+Axios+Router+Pinia 创建过程以及会出的错误
    第一步保证Node.Js版本为12.0以上打开cmd命令输入node-v看版本目前是最新用18.0就行,下载地址:[https://nodejs.org/en/](https://nodejs.org/en/)安装node.js配环境......