博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

vue history模式下 刷新或路由跳转404

Posted on 2021-01-13 09:43  guors  阅读(2072)  评论(0编辑  收藏  举报

vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。并且url上会出现我们讨厌的‘#’。

如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。

const router = new VueRouter({
 base: '你的项目名', mode: 'history', routes: [...] })

这里附上vue router 关于history模式的官方文档: https://router.vuejs.org/zh/guide/essentials/history-mode.html

解决方法:
因为nginx配置为一个端口下配置多个项目:

server {
	listen       8801;
	server_xxx;
	root 存放打包后项目的根目录;
	
	location /你的项目名/ {
		root 存放打包后项目的根目录;
		index  index.html index.htm;
		try_files $uri $uri/ /你的项目名/index.html;
	}
}

  

这种情况下vue项目的static静态文件路径还出现404问题,这时候我们在config/index中build

    index: path.resolve(__dirname, '../dist/index.html'),
    assetsRoot: path.resolve(__dirname, '../dist'),
    assetsSubDirectory: 'static',
    assetsPublicPath: '/你的项目名/',

 


再试试之前出现的问题,直接进入某个路由不会出现404,刷新路由不会出现404,项目静态文件也能正常访问了。
(试了好久终于可以了,虽然不知道有没有其他问题)
我屮艸芔茻,啦啦啦!