位置: IT常识 - 正文

vue/react项目刷新页面出现404的原因以及解决办法(react 刷新)

编辑:rootadmin
vue/react项目刷新页面出现404的原因以及解决办法 vue/react项目刷新页面出现404的原因以及解决办法背景解决办法文章参考背景

推荐整理分享vue/react项目刷新页面出现404的原因以及解决办法(react 刷新),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:react如何刷新当前页面,react 刷新,react刷新组件不刷新页面,react 刷新页面,react 刷新,react 刷新,react 刷新,react 刷新页面,内容如对您有帮助,希望把文章链接给更多的朋友!

问题描述:vue/react项目,正常的页面操作跳转,不会出现404的问题,但是一旦刷新,就会出现404报错。

产生原因:我们打开vue/react打包后生成的dist文件夹,可以看到只有一个 index.html 文件及一些静态资源,这个是因为vue/react是单页应用(SPA),只有一个index.html作为入口文件,其它的路由都是通过JS来进行跳转的。 而网页上显示的是静态资源的绝对路径,虽然浏览器上的url变化了,但实际上服务器的静态资源是没有更改路径的,始终只有index.html这一个入口,所以刷新就会导致url上的路径和服务器上的资源不匹配,无法找到静态资源,从而报错404。(多页应用因为有多个入口文件,所以不会有这样的问题)。

接下来我们看看服务器上的nginx配置:

server { // 监听80端口 listen 80; // 定义你的站点名称 server_name website.com; // 根据请求 URI 设置配置 location / { // 站点根目录,这里为 vue 构建出来的 dist 目录 root /www/dist; // 站点初始页为index.html 或 index.htm index index.html index.htm; }}vue/react项目刷新页面出现404的原因以及解决办法(react 刷新)

根据nginx配置我们可以得出,当我们在地址栏输入域名(如www.xxx.com)时,这时会打开我们 dist 目录下的 index.html 文件,然后我们再通过页面操作跳转路由进入到 www.xxx.com/login,关键在这里,当我们在 www.xxx.com/login 页执行刷新操作,nginx location 是没有相关配置的,所以就会出现 404 的情况。

解决办法

法1:将vue/react路由模式由history路由改为hash路由

为什么hash模式下没有问题: hash路由的原理是onhashchange事件,hash模式下,仅hash符号之前的内容会被包含在http请求中,如www.xxx.com/#/login,hash的值为 #/login,hash值#/login虽然出现在 url中,但不会被包括在http请求中,其只会请求www.xxx.com,对服务端完全没有影响,因此改变hash不会重新加载页面,即使服务器nginx没有配置location,也不会返回404错误。

history模式:原理是利用了h5的Interface 中的pushState()方法和replaceState()方法,它们提供了对浏览器历史记录进行修改的功能,但当它们执行修改时,虽然改变了当前的 URL,但浏览器不会立即向服务器发送请求,因此history模式正常页面操作跳转路由,是不会再次发送http资源请求的。但是当刷新的时候,由于url已经改变,如www.xxx.com/login会完整地向服务器请求相关资源,所以就会造成对应路径的资源找不到,从而返回404。

但是使用hash路由,url上会携带#号标志,且history模式的同步更新浏览器历史记录功能就没有了。

法2:在服务器nginx配置文件里,添加如下代码,再重启nginx,刷新网页就OK了

location / { try_files $uri $uri/ @rewrites; index index.html;}location @rewrites { rewrite ^.*$ /index.html last;}文章参考

https://www.cnblogs.com/echohye/p/16566706.html https://www.jb51.net/article/256217.htm https://www.cnblogs.com/ling-yu-amen/p/11533726.html

本文链接地址:https://www.jiuchutong.com/zhishi/290251.html 转载请保留说明!

上一篇:自己动手搭网站(六):javaweb搭建一个简单的个人博客系统(自己搭建网站怎么赚钱)

下一篇:el-table 列的动态显示与隐藏(element动态变化表格列)

  • 华为gt3和华为watch3手表区别(华为gt3和华为watch2pro手表区别)

    华为gt3和华为watch3手表区别(华为gt3和华为watch2pro手表区别)

  • 微信零钱通转出到银行卡多久到账(微信零钱通转出有限额吗)

    微信零钱通转出到银行卡多久到账(微信零钱通转出有限额吗)

  • iphone怎么扫描图片转文字(苹果扫描怎么扫描图库照片)

    iphone怎么扫描图片转文字(苹果扫描怎么扫描图库照片)

  • 微信商家积分在哪里查询和兑现(微信商家 积分)

    微信商家积分在哪里查询和兑现(微信商家 积分)

  • 钉钉分屏会记录播放时间吗(钉钉分屏会记录时长吗)

    钉钉分屏会记录播放时间吗(钉钉分屏会记录时长吗)

  • 12306什么时候开始抢票(12306什么时候开始的)

    12306什么时候开始抢票(12306什么时候开始的)

  • iphone11耳机插上去没反应(iphone11耳机插上是松动的)

    iphone11耳机插上去没反应(iphone11耳机插上是松动的)

  • 被挡访客怎么解除(被挡访客怎么解除在哪设置)

    被挡访客怎么解除(被挡访客怎么解除在哪设置)

  • 路由器卫士账号密码是什么(路由器卫士账号密码错误)

    路由器卫士账号密码是什么(路由器卫士账号密码错误)

  • 机械硬盘坏了数据能恢复吗(机械硬盘坏了数据能找回来吗)

    机械硬盘坏了数据能恢复吗(机械硬盘坏了数据能找回来吗)

  • 华为手机怎么添加桌面插件(华为手机怎么添加桌面天气和时间)

    华为手机怎么添加桌面插件(华为手机怎么添加桌面天气和时间)

  • word字体变大快捷键(word字体变大按什么键)

    word字体变大快捷键(word字体变大按什么键)

  • 淘宝未收到货怎么申请退款流程(淘宝未收到货怎样投诉商家)

    淘宝未收到货怎么申请退款流程(淘宝未收到货怎样投诉商家)

  • 恢复出厂设置联系人还在吗(如何恢复出厂设置)

    恢复出厂设置联系人还在吗(如何恢复出厂设置)

  • 相机ael什么意思(相机中的ae-l af-l)

    相机ael什么意思(相机中的ae-l af-l)

  • 序列号fd开头的是什么(序列号f.开头)

    序列号fd开头的是什么(序列号f.开头)

  • 小米9数据线是什么类型(小米9数据线是多少安的)

    小米9数据线是什么类型(小米9数据线是多少安的)

  • mate30pro音量键怎么按(mate30e pro音量键)

    mate30pro音量键怎么按(mate30e pro音量键)

  • 苹果xr怎么设置铃声模式(苹果xr怎么设置动态壁纸)

    苹果xr怎么设置铃声模式(苹果xr怎么设置动态壁纸)

  • 微云在微信里怎么打开(微信微云怎么使用)

    微云在微信里怎么打开(微信微云怎么使用)

  • 携程砍价返现在哪领取(携程砍价返现在哪里)

    携程砍价返现在哪领取(携程砍价返现在哪里)

  • cad字体大小快捷键(cad字体变大)

    cad字体大小快捷键(cad字体变大)

  • 如何进行BIOS密码的清除?多种清理BIOS密码方法介绍(bios密码如何设置)

    如何进行BIOS密码的清除?多种清理BIOS密码方法介绍(bios密码如何设置)

  • win11如何设置多屏显示时复制或扩展的显示?(win11多开)

    win11如何设置多屏显示时复制或扩展的显示?(win11多开)

  • 旅客运输服务解释
  • 预收账款确认收入
  • 如何在电子税务局开具全电发票
  • 残保金计算包括五险一金吗
  • 评估所得征税方法是一种控制纳税人逃税和避税的措施
  • 建筑业收入确认条件
  • 固定资产已入账怎么冲销
  • 经营租赁发生改良费用的会计分录如何处理?
  • 土地价值是否计入GDP
  • 企业所得税汇算清缴退税分录
  • 货运代理公司可以开运输费发票吗
  • 法人代表借钱给公司可以做短期借款吗
  • 小规模纳税人未开票收入填在哪里
  • 年初未分配利润加本年净利润等于
  • 小规模纳税人计提增值税账务处理
  • 直接转让土地使用权 土地增值税申报表
  • 本企业领用外购原材料进项税要转出吗
  • 实行简易征收
  • 文件夹如何更改图标
  • macbook截图快捷键没反应
  • 年末资产减年初资产
  • 工人的意外险如何赔付
  • 购买电脑应该怎么做账
  • php网页运行原理
  • 备份计算机需要多久
  • 固定资产增加应计入什么
  • wordpress文章编辑使用教程
  • 简述税款征收的基本原则
  • laravel create
  • thinkphp ide
  • wordpress添加css
  • 外汇申报是什么意思
  • 基于web的网站设计与实现
  • php获取指定日期的星期几的方法是
  • 全网首发是什么意思
  • centos7配置自动获取ip
  • ChatGPT会取代你的岗位吗?
  • 长期待摊费用科目怎么使用
  • pycharm操作界面
  • 融资租赁的利息进项税可以抵扣吗
  • 当月银行账可以下个月做吗
  • php clone函数
  • uni-app表单验证
  • python怎么自己写函数
  • 终止合约要赔钱吗
  • 认证一般纳税人之后,之前开的发票作废重新填开的税率
  • 小企业会计准则和一般企业会计准则的区别
  • 小规模首次申请发票张数
  • 无形资产摊销是当月增加当月摊销吗
  • sql server2008中删除表中记录的命令
  • SQLServer 2008 CDC功能实现数据变更捕获脚本
  • 一般纳税人是指哪些人群
  • 个体工商户需要给员工交社保吗
  • 库存现金账实不符怎么处理
  • 营改增土地出让金抵减销售额如何做账及申报纳税的...
  • 一般纳税人开红字专用发票流程
  • 纸质承兑汇票怎么兑现步骤
  • 政府扶助资金
  • 应收票据的分录怎么做
  • 自产的产品用于生产缴纳增值税
  • 税控设备全额抵减
  • debian系统教程
  • grub2引导win10
  • windows无法启动wlanautoconfig服务
  • linux自动清理内存软件
  • ksweb软件
  • win10锁屏界面的搜索怎么关
  • Win7系统打开IE提示“堆栈满溢”的多种解决方案
  • 使用linux的电脑
  • cocos creator 资源加密
  • cocos2djs
  • cocos2d-js游戏开发
  • 删除默认共享的文件夹
  • 王军调研地税局的职务
  • 通用税务采集软件有哪些
  • 福建省地方amc
  • 福建 退休
  • 国税总局河南省税务局官网
  • 大同税务局官网录取名单
  • 企业出租房产的税收优惠政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设