位置: 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动态变化表格列)

  • word表格上下错开怎么对齐(word表格上下错位拉不齐)

    word表格上下错开怎么对齐(word表格上下错位拉不齐)

  • 在word中图片怎么移动(在word中图片怎么设置同样大)

    在word中图片怎么移动(在word中图片怎么设置同样大)

  • 75hz和144hz的区别(75hz和144hz的区别大吗贴吧)

    75hz和144hz的区别(75hz和144hz的区别大吗贴吧)

  • 小米9是多少hz刷新率(小米9是90hz刷新率吗)

    小米9是多少hz刷新率(小米9是90hz刷新率吗)

  • 手机发烫跟电池有关系吗(手机发烫耗电快)

    手机发烫跟电池有关系吗(手机发烫耗电快)

  • 云技术为什么叫云(云技术原来是什么意思)

    云技术为什么叫云(云技术原来是什么意思)

  • 局域网外什么意思(什么是局域网和外网)

    局域网外什么意思(什么是局域网和外网)

  • 腾讯会议可以手机电脑一起用吗(腾讯会议可以手机和平板一块上吗)

    腾讯会议可以手机电脑一起用吗(腾讯会议可以手机和平板一块上吗)

  • vivo怎么取消自动删除安装包(vivo怎么取消自动锁屏功能)

    vivo怎么取消自动删除安装包(vivo怎么取消自动锁屏功能)

  • 华为nova5z什么时候上市(华为nova5z什么时候上市的)

    华为nova5z什么时候上市(华为nova5z什么时候上市的)

  • 8600gt显卡相当于gtx几(8600gt显卡相当于gt几)

    8600gt显卡相当于gtx几(8600gt显卡相当于gt几)

  • 为什么b站视频加载不出来(为什么b站视频会绿屏)

    为什么b站视频加载不出来(为什么b站视频会绿屏)

  • 小米手机sn码有几位(小米手机sn码有字母)

    小米手机sn码有几位(小米手机sn码有字母)

  • 现代计算机多采用以什么为中心的结构(现代计算机多采用)

    现代计算机多采用以什么为中心的结构(现代计算机多采用)

  • 手机没有电池直接充电能开机吗(手机没有电池直接插充电器怎么开不起机)

    手机没有电池直接充电能开机吗(手机没有电池直接插充电器怎么开不起机)

  • oppor15微信聊天记录怎么样可以恢复(oppor15微信聊天记录恢复)

    oppor15微信聊天记录怎么样可以恢复(oppor15微信聊天记录恢复)

  • word怎样设置上标(word怎样设置上下居中)

    word怎样设置上标(word怎样设置上下居中)

  • 红米手机重启开不了机(红米手机重启开不了机显示MI)

    红米手机重启开不了机(红米手机重启开不了机显示MI)

  • 小米5是什么屏幕(小米5屏幕材质参数)

    小米5是什么屏幕(小米5屏幕材质参数)

  • 美团怎么关注店铺(美团怎么关注店铺地址)

    美团怎么关注店铺(美团怎么关注店铺地址)

  • a1748是苹果几的耳机(苹果a1784是苹果几代)

    a1748是苹果几的耳机(苹果a1784是苹果几代)

  • 爱奇艺月卡怎么使用(爱奇艺月卡怎么计算时间)

    爱奇艺月卡怎么使用(爱奇艺月卡怎么计算时间)

  • iphonexs双卡吗(苹果xs双卡吗?)

    iphonexs双卡吗(苹果xs双卡吗?)

  • vbe6ext.olb不能被加载

    vbe6ext.olb不能被加载

  • 忘记id密码怎么改(忘记id密码怎么恢复出厂设置)

    忘记id密码怎么改(忘记id密码怎么恢复出厂设置)

  • 【1】从零开始学习目标检测:YOLO算法详解(小说《从零开始》)

    【1】从零开始学习目标检测:YOLO算法详解(小说《从零开始》)

  • js策略模式是什么(js方案)

    js策略模式是什么(js方案)

  • WordPress 去掉留言中的网址字段(wordpress如何删除导入的主题)

    WordPress 去掉留言中的网址字段(wordpress如何删除导入的主题)

  • 金税盘开票系统怎么增加税目
  • 耕地占用税的特点与意义
  • 企业税后利润留用比例怎么算?
  • 工会账怎么做
  • 企业所得税能不能删除重新报
  • 现金余额本月金额和本年累计金额怎么填
  • 金融服务担保费会计处理
  • 政府扶持企业资金要交税吗
  • 发票到了款未付账务处理
  • 出售商品取得的收入300万元存入银行
  • 产权转让与股权转让
  • 产权转移书据印花税计入什么科目
  • 返利冲抵货款会计分录
  • 企业所得税25%怎么这么高
  • 广告宣传怎么开发票
  • 银行余额调节表模板
  • 预缴税款后怎么开票
  • 个人转让土地使用权 增值税
  • 小规模纳税人3%减按1%的账务处理
  • 进项发票已经抵扣怎么做退回处理
  • 支付应付账款的会计科目
  • 办公室装修合同印花税怎么缴纳?
  • 跨年度取得发票会计分录
  • 库存商品成本变动率
  • 打开网页提示打开别的应用
  • 房屋租赁合同变更
  • 坏账准备如何做账
  • win11无限重启怎么解决
  • Win11 Build 22454.1000 开发者预览版发布(附更新修改已知问题+安装)
  • 基于php开发
  • 固定资产减值如何确定
  • 金枝玉叶怎么养才爆盆
  • cuda completed with errors
  • 最保值的ipad
  • 设计费包含概算费用吗
  • 小程序报错怎么解决
  • javatoken生成机制
  • php获取年月日
  • 微信小程序商城源码php
  • 前端部署发布项目有哪些
  • nvm安装教程
  • bootstrap 栅格
  • 软件折旧费
  • 结转成本费用的会计分录是什么?
  • phpcms官网打不开
  • 帝国cms灵动标签 PHP变量文章ID加减1
  • webpack怎么优化
  • 间接费用允许调整吗
  • 税率免税的发票
  • 免税普票要交企业所得税吗
  • 股票价值和内部收益率的公式
  • 白酒消费税最低计税价格核定范围包括
  • 发票金额少于付款金额怎么做账
  • 工业企业制造费用具体怎么摊
  • 哪些免征土地使用税
  • 开具发票时如何做账务处理?
  • 股息和资本收益
  • 装修公司预收款要交增值税吗
  • 养老保险滞纳金计算器
  • mysql总是安装失败
  • 自动软件脚本
  • 两台电脑如何共享网络
  • 安装freebsd
  • windows开始搜索栏
  • win7更改电脑设置在哪里
  • centos7如何添加光盘
  • linux 内核编译
  • cocos2dx官方教程
  • 怎么用javascript
  • javascript简明教程
  • 获取本站的context root
  • shell获取命令报错信息
  • easyui combobox设置值
  • jquery自定义的方法有哪些
  • 出售废铁的会计分录
  • 无偿赠送的税务怎么处理
  • 小规模纳税人的开票
  • 土地增值税的房屋转让指出售 赠与
  • 网上申报成功后才能去体检吗
  • 车船使用税减免法律规定
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设