vue使用History mode之后页面无法刷新

vue history模式刷新页面进入404解决方案 vue 路由模式 history模式 刷新页面进入404解决方案 阅读详情

用 Vue.js + vue-router 创建单页应用,是非常简单的。使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 vue-router 添加进来,我们需要做的是,将组件(components)映射到路由(routes),然后告诉 vue-router 在哪里渲染它们。

一般开发的单页应用的URL都会带有#号的hash模式,因为整个应用本身而言就只有一个HTML,其他的都是通过router来渲染。如果因为业务需要,或者单纯是觉得带#号不美观,那么可以使用history模式,简单而言就是在router的配置文件index.js中添加如下一行代码:

history: mode

没错,这样URL不再会有#号,你会发现整个地址栏回到了你熟悉的那个样子,不过,接下来介绍的就非常的重要了,可能很多刚入门的新人或多或少都会遇见这么一两个坑…

页面无法渲染

这里以我写的一个项目为例子,当我开启history模式的时候,我并没有对路由进行任何处理,在Dev阶段一切都是正常的,可是打包之后,访问项目路径:

sdp.driver.com/driver/

会发现页面一片空白,但是静态文件都能够正常的引用,因为使用了YII中的模块,所以除了域名之外,还会带有driver模块名。一般很多人创建的项目都放在了根目录下面,也就是:

sdp.driver.com

这样的一种形式,没问题。可是如果配置了模块,或者放置在了子文件夹下面,那么就会出问题。其实,这是因为router无法找到路径中的组件,所以也就无法渲染了。只需要修改router中的index.js,在每个path中加上你项目名称就行了,这样就能够成功了。

index.js

最后的页面效果:

 

404错误

在History mode下,如果直接通过地址栏访问路径,那么会出现404错误,这是因为这是单页应用(废话)…其实是因为调用了history.pushState API 所以所有的跳转之类的操作都是通过router来实现的,解决这个问题很简单,只需要在后台配置如果URL匹配不到任何静态资源,就跳转到默认的index.html。具体配置如下:

Apache

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

nginx

location / {
  try_files $uri $uri/ /index.html;
}

 

关于每次点击链接都要刷新页面的问题

众所周知,开发单页应用就是因为那丝般顺滑的体验效果,如果每次点击都会刷新页面…
出现这个的原因是因为使用了window.location来跳转,只需要使用使用router提供的方法,就能够解决这个问题:

在main.js中配置中将router绑定到全局

Vue.prototype.router = router;

之后都使用如下的方式来控制跳转

this.router.push('driver/service');
在使用vue router把模式改成history时,刷新404问题解决方案 如果我们在这边模式是用history,部署到ng上面就第一次页面不会出现问题,刷新页面就会出现404,有以下解决方案 方案一 (这种方式容易被第三方劫持) location /{ root /data/nginx/html; index index.html index.htm; error_page 404 /index.html; } ... 阅读详情

相关推荐

详解Vue路由History mode模式中页面无法渲染的原因及解决

主要介绍了详解Vue路由History mode模式中页面无法渲染的原因及解决,非常具有实用价值,需要的朋友可以参考下

vue-cli + router生成的项目,当mode为history时,直接在url中输入地址页面访问404,或者刷新页面后404

有的时候,业务中会有一些需求,直接在其他地方,比如邮件中提供系统链接,通过点击一个url直接跳转到我们的系统中来。 在本地开发时,直接输入对应的url就可以访问,但是当项目部署在服务器之后,直接输入url就会报错404,这是因为router本身提供的就是一个 虚拟路径,通过router内部的机制进行页面跳转和参数传递的,实际项目中根本不存在此路径对应的资源。 对应此问题,尤大在官网上也提到过,...

c2311156c的博客 6284

vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法

解决vue-router嵌套路由(子路由)在history模式下刷新无法渲染页面的问题,具体内容如下 一. 异常描述 本来使用的是vue-router的hash模式,但是hash模式下url需要带“#”符号,不仅看起来不舒服,而且有些场景下是会破坏路由中的”#”(微信分享页面就会把”#”后边的内容处理掉),所以就需要使用history模式,然后就让后端改下nginx配置: location / { try_files $uri $uri/ /index.html; } vue-router使用history模式+使用嵌套路由: const router = new Router({ m

vue项目history模式 解决nginx页面刷新404问题

vue项目history模式 解决nginx页面刷新404问题

weixin_44640245的博客 1156

如何制作Mike21溢油模型围油栏文件

这段时间群友在做海洋环评的做了一个MIKE21的溢油模型,溢油模型其实也是ECOLAB模块的应用,而在海上发生溢油事件的时候,为防止溢油对海洋生态的破坏,经常使用的一种手段就是使用围油栏技术将溢油控制在一定范围并进行处理。今天小编就给大家说说在MIKE21里怎么实现围油栏文件的制作

zhuzhujiayoua的博客 1329

矿卡CMP 170HX的AI推理性能优化实战

GPU计算在现代AI推理中扮演着核心角色,其并行计算架构特别适合处理神经网络的大规模矩阵运算。通过CUDA指令集优化和计算管线重构,可以显著提升硬件利用率,这在边缘计算和带宽敏感型任务中尤为重要。以NVIDIA CMP 170HX矿卡为例,通过禁用FMA指令和框架适配优化,其FP32性能可提升15.9倍,在Qwen2.5-1.5B模型的4-bit量化推理中达到A100同架构78%的解码速度。这种优化技术不仅让淘汰矿卡重获新生,更为边缘AI部署提供了高性价比解决方案,特别适合7B以下量化模型部署和多路视频分析

weixin_30432579的博客 624

Vue3中使用History模式引发刷新页面出现404的问题

在vue3中的路由中,路由间的跳转是不刷新浏览器的,也就是用ajax来请求后端接口对组件进行增量更新,hash模式中#后面的路径都不会直接发送给后端,都是前端自己在玩,但是路径中有'#'不利于seo优化而且也不美观,一旦在history模式下刷新浏览器,就会相当于直接请求后端中对应uri的controller,这时大概率是请求不到任何数据的,从而报404错误.如果你使用的是nginx,可以在nginx的config配置文件中添加如下配置。这是你的路由,它位于src/router/index。

STImuLaTE_08的博客 5831

切比雪夫(最小区域法)直线拟合算法

切比雪夫,最小区域法直线拟合

闪电彬彬的博客 3961

vue项目路由为 history 模式时, 线上环境刷新后空白页或404

则是因为资源的基础路径出现了问题。需要修改vite.config.ts文件,将base改为 / 而不是 ./。如果有 .env.production 文件,是将该文件的VITE_BASE_URL更改 ,若改.env.development 文件或 .env 文件 则无效。nginx配置如下:重点在于 加上 try_files $uri $uri/ /index.html;本地没问题,部署到测试环境或线上后 刷新后空白页。前面莫名其妙加上了当前地址的第一级路由的地址。所以拿不到正确的资源。

qq_60990876的博客 6603

FFmpeg视频缩放终极指南:从基础命令到保持宽高比的5种实战技巧

本文是FFmpeg视频缩放的终极指南,详细讲解了从基础命令到保持宽高比的5种实战技巧。针对不同平台(如抖音、B站、Instagram)的分辨率要求,提供了具体的参数模板和批量处理脚本,帮助内容创作者高效、精准地调整视频大小,避免画面变形或黑边问题,实现多平台适配。

juice的博客 457

HIDL概述

HIDL背景 Treble 是 Google Android 团队的一项重大项目,意在 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Android 7.x 及更早版本中没有正式的供应商接口,因此设备制造商必须更新大量 Android 代码才能将设备更新到新版 Android 系统: 图1 Treble ...

u013357557的专栏 2万+

vue路由为history时的刷新问题

vue路由为history模式

keke11211的博客 4616

16、保障Azure应用安全:密钥管理与身份认证

本文深入探讨了保障Azure应用安全的关键措施,包括使用网络安全工具(如Application Gateway和Azure Front Door)防范攻击,解决传统密钥和机密存储方式的安全隐患,以及通过Azure Key Vault实现敏感信息的安全管理。同时,介绍了使用托管标识实现Azure资源间安全访问的方法,并结合实际操作步骤展示了如何配置Key Vault、设置访问策略、存储机密以及授予Web应用对SQL Server的访问权限。最后,对不同安全措施进行了比较,并提出了在开发、测试及生产环境中的综合

rock5的博客 71

404 单页应用 报错 路由_详解Vue路由History mode模式中页面无法渲染的原因及解决...

Vue下路由History mode导致页面无法渲染的原因用 Vue.js + vue-router 创建单页应用,是非常简单的。使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 vue-router 添加进来,我们需要做的是,将组件(components)映射到路由(routes),然后告诉 vue-router 在哪里渲染它们。一般开发的单页应用的URL都会带有#号的ha...

weixin_39719427的博客 270

XPATH注入漏洞检测工具汇总

环境 > Python3.7。

墨痕诉清风的博客 742

C#上位机国产化适配全方案:兼容统信UOS+鲲鹏/昇腾+国产PLC,可直接交付国企项目

去年下半年,我帮天津滨海新区一家给一汽丰田做配套的汽车零部件国企,完成了3条产线、12套C#上位机的全栈国产化适配。这个项目的背景很典型,也很戳中国企客户的命门:一开始客户找了两家本地的集成商,都没搞定:第一家只会用.NET Framework,根本不知道怎么在统信UOS上跑C#;第二家勉强用.NET Core 3.1跑起来了,但和汇川国产PLC的通信丢包率高达1.2%,产线根本不敢用。我们接手后,用了2个月完成全栈适配:从Windows Server 2019迁移到统信UOS 1070d服务器版,从.NE

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 497

vue项目,build后,刷新后页面挂掉cannot get

1.项目完成后,npm run build 后,首次进入测试的接口 localhost:9000没有问题,但是当刷新的时候页面就挂掉了? 解决办法去掉mode:'history',开启HTML5 History Mode后,尤其需要server端的支持 let router = new VueRouter({//mode: 'history',注释掉解决问题routes: [{path: ...

weixin_33937913的博客 909

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Vue路由History mode模式中页面无法渲染的原因及解决

Vue下路由History mode导致页面无法渲染的原因用 Vue.js + vue-router 创建单页应用,是非常简单的。使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 vue-router 添加进来,我们需要做的是,将组件(components)映射到路由(routes),然后告诉 vue-router 在哪里渲染它们。一般开发的单页应用的URL都会带有#号的has

{{ Coding enjoy }} 7万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

vuerouter在history mode下刷新页面显示Cannot GET

1.配置history模式 ... export default new VueRouter({ mode: 'history', routes:[ { path:"/article/",name:'article',component:article, children:[ {path:"alist",component: alist} ] }, ] }) 这时候去访问http://localhost:8080/并且随便怎么搞点这点那都能显示

gfhj778的博客 4160

vue路由history模式刷新页面出现404问题

vue hash模式下,URL中存在'#',用'history'模式就能解决这个问题。但是history模式会出现刷新页面后,页面出现404。解决的办法是用nginx配置一下。 在nginx的配置文件中修改 方法一: server { listen 9010; server_name localhost; location /{ root F:/mxr/WebApp/mxr/unpackage/dist/build/h5/; index index.

qq_38188762的博客 2799

在vue预渲染项目在history模式下刷新无法正常页面

在vue预渲染项目在history模式下刷新无法渲染页面的问题刷新css样式不生效报错404 const router = new Router({ mode: 'history', routes: [ { path: '/', component: mall, name: 'mall' ...

weixin_44781409的博客 3678

vue中mode hash 和 history的区别

对于 Vue 这类渐进式前端开发框架,为了构建 SPA(单页面应用),需要引入前端路由系统,这也就是 Vue-Router 存在的意义。前端路由的核心,就在于 —— 改变视图的同时不会向后端发出请求。为了达到这一目的,浏览器当前提供了以下两种支持:hash —— 即地址栏 URL 中的 # 符号(此 hash 不是密码学里的散列运算)。比如这个 URL:http://www.abc.com/#/h...

lyn1772671980的博客 3万+

Vue路由使用history模式,nginx下运行,页面刷新404

vue路由使用history模式,nginx下启动,页面刷新404

weixin_41285537的博客 2038

vue打包后项目,页面刷新之后一片空白

小白:记使用vue遇到的问题及解决办法 vue项目,打包之后页面能正常显示,但是刷新之后页面就一片空白什么都没有,也不报错。所有页面都能正常打开,都是刷新就一片空白。去网上搜索是因为router中的mode的模式问题,因为之前觉得url中的#好看起来不是很好,就想着去掉,没想到项目上线之后刷新页面出现了问题。 因为项目中的mode设置的是history,所以会出现这种情况,默认下是hash模式...

我的个人博客 3887

VUE 线上部署 路由history模式中,刷新空白页面

VUE部署开发环境 history 页面空白处置VUE部署开发环境 history 页面空白处置VUE中路由配置Nginx 配置文件 VUE部署开发环境 history 页面空白处置 今天在部署VUE线上环境的时候,遇到了问题,在VUE路由中设置了history模式,导致打包后,在页面上出现了空白页面。以下是处理方法; VUE中路由配置 在路由中配置history模式。 import Vue...

TianKongDeTangGuo的博客 2360
上一篇: python自定义filter函数
下一篇: 2021-01-28
linuxvfast
博客等级 码龄10年 6粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值