【问题记录】解决vite多页应用路由改用history之后本地刷新404问题

当前包的版本信息:

"vue": "^2.7.14",

"vue-router": "^3.6.5"

"vite": "^3.0.7",

首先,修改路由模式

首先,将之前多页项目中的某个页面路由模式改用 history ,并且根据官方文档设置对应的 base 属性:

mode: 'history',

base: '/pageA.html',

代码块如下:

return new VueRouter({
  mode: 'history',
  base: '/pageA.html',
  routes: [{
    path: '/',
    component: Home,
  },{
    path: '/hello',
    component: Hello,
  }]
});

问题一:

当前项目是一个多页应用配置,将路由从默认的hash模式改为history模式之后。

访问 ​ http://localhost:8128/pageA.html 正常,页面内跳转 ​ http://localhost:8128/pageA.html/hello 也正常,但是刷新 ​ http://localhost:8128/pageA.html/hello 时会报错 404

解决(第一步):

404报错就如字面意思,没找着,放到生产环境上我们都知道路由模式改用history时需要服务端做一层nginx的重定向。

nginx的重定向的工作目的:请求次级页面的路由全都指向期望的根目录,单页应用一般都指向 index.html,多页应用例如上文中的案例,就应该指向到 pageA.html. 

以该例说明,当发起页面请求时, http://localhost:8128/pageA.html/hello 应该指向  http://localhost:8128/pageA.html 的服务器地址,而不是真的去访问 hello 这个地址去。

所以,对应本地开发环境我们也需要做一层代理。

在 vite.config.ts 文件中设置 proxy 如下:

server: {
  host: 'localhost',
  port: 8128,
  proxy: {
    '/pageA.html/': {
      target: 'http://localhost:8128',
      rewrite: () => '/pageA.html',
    },
}

问题二:

404问题解决完之后,页面仍旧空白,控制台 Network 显示 main.ts 资源加载失败(有一个新的 404来了)

打开报错详情可以看到资源请求路径不对!

解决(第二步):

直接去看下代码中请求这个资源的写法大致能猜到可能是 相对路径、绝对路径 这种问题了。

 

因为之前是hash模式 ,现在改用history模式之后,此处的相对路径需要改成绝对路径,正确写法:

最后,刷新验证

修复成功 √

关键文档:

HTML5 History 模式 | Vue Router

API 参考 | Vue Router

开发服务器选项 | Vite 官方中文文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/25039.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【异常捕获】

异常捕获 异常概念处理错误方式 异常处理举例栈展开异常规范异常继承层次优缺点 异常 概念 异常时程序可能检测到的,运行时不正常的情况,如存储空间耗尽,数组越界等,可以预见可能发生在什么地方但不知道在什么时候发生的错误。 …

mysql倒库操作遇到的问题

背景:本地windows 10安装了mysql数据库后,需要把远程库的表结构和数据全部导入进来。 操作:导出数据库,导入数据库。 第一步:导出数据库 使用dump命令即可。 登陆mysql数据库 mysql -hhost --default-character-s…

海汽集团:业财共享服务中心建设推进集团数字治理

随着大数据时代的到来,数字化、信息化的财务管理方式应运而生。建立财务共享服务中心,走向业财一体化,已成为企业财务管理转型的必然趋势。 海汽集团作为全国唯一一家具有全省性客运网络的道路运输企业、海南道路运输业头部企业,…

3. 自然语言处理NLP:具体用途(近义词类比词;情感分类;机器翻译)

一、求近义词和类比词 1. 近义词 方法一:在嵌入模型后,可以根据两个词向量的余弦相似度表示词与词之间在语义上的相似度。 方法二:KNN(K近邻) 2. 类比词 使用预训练词向量求词与词之间的类比关系。eg:man&a…

​Lambda表达式详解​-初遇者-很细

目录 Lambda简介 对接口的要求 Lambda 基础语法 Lambda 语法简化 Lambda 表达式常用示例 lambda 表达式引用方法 构造方法的引用 lambda 表达式创建线程 遍历集合 删除集合中的某个元素 集合内元素的排序 Lambda 表达式中的闭包问题 Lambda简介 Lambda 表达式是 JD…

元宇宙应用领域-运动

元宇宙作为互联网的下一个阶段,目前已经发展成为一个多领域的“平行宇宙”,其中就包括体育。从体育的角度来看,元宇宙将是一个集运动、娱乐、社交、生活、学习于一体的“平行宇宙”,可以让人们在元宇宙中进行更好的运动&#xff0…

算法工程师的主要职责(合集)

算法工程师的主要职责 算法工程师的主要职责1 1、环境建模 根据设计的机器人方案,构建机器人的运动学模型、观测模型等概率学模型; 2、slam算法研发 研究基于多线激光雷达的slam算法,包括特征提取、数据关联、闭环检测等相关算法的开发; 3、定位算法研发…

MySQL-多表查询(中)

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️树高千尺,落叶归根人生不易&…

力扣sql中等篇练习(二十七)

力扣sql中等篇练习(二十七) 1 连续两年有3个及以上订单的产品 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # Write your MySQL query statement below WITH T as (SELECT t.product_id,t.d,count(order_id) numFROM(SELECT order_id,product_id,…

Axure教程—表格(中继器)

本文将教大家如何用AXURE中的中继器制作表格 一、效果介绍 如图: 预览地址:https://oc3e6a.axshare.com 下载地址:https://download.csdn.net/download/weixin_43516258/87854863?spm1001.2014.3001.5501 二、功能介绍 可以在表格中插入…

Linux 系统大技能,搞定 90% 日常运维

一、Linux 系统日常运维九大技能 1、安装部署 方式:U盘,光盘和网络安装 其中网络安装已经成为了目前批量部署的首选方式:主要工具有Cobbler和PXEkickstart 可以参考如下链接内容: http://www.cnblogs.com/mchina/p/centos-px…

IP协议-服务类型字段

服务类型(Type of Service)字段是比较复杂的一个字段,该字段经过多次标准变更。 IPv4报文 一、最初标准(RFC 791) RFC 791定义TOS字段总共占用8bit,分为IP Precedence优先级(3bit)、…

JAVA商城源码-B2B2C商城系统-独立部署,一套源码终身可用

在现在电商迅速占领市场的时代里,选择开发商城系统已经成为了一种趋势,现在开发搭建商城系统有很多编程语言可以选择,目前在电商里市面上受到很多商家企业的喜爱的便是Java商城系统,那为什么要选择Java电商系统呢? 1、…

快递业的最新发展趋势:2023年市场预测

快递业是随着电子商务崛起而迅速发展的行业之一。自从互联网取代了线下商业模式,电子商务的发展成为了现代零售业的主要趋势,而快递业则变得越来越重要和不可或缺。未来的快递业需要应对许多挑战和机遇。 在2023年,快递业将进一步走向数字化、…

TatukGIS Developer Kernel 11.78 for .NETCore Crack

Tatuk GIS Developer Kernel for .NET 是一个变体,它是受控代码和 .NET GIS SDK,用于为用户 Windows 操作系统创建 GIS 专业软件的过程。它被认为是一个完全用于 Win Forms 的 .NET CIL,WPF 的框架是为 C# 以及 VB.NET、VC、oxygen 以及最终与…

ESP8266获取天气预报信息,并使用CJSON解析天气预报数据

一、实现功能 当前文章介绍如何使用ESP8266和STM32微控制器,搭配OLED显示屏,制作一个能够实时显示天气预报的智能设备。将使用心知天气API来获取天气数据,并使用MQTT协议将数据传递给STM32控制器,最终在OLED显示屏上显示。 心知…

第五十四天学习记录:C语言进阶:动态内存管理Ⅱ

常见的动态内存错误 1、对NULL指针的解引用操作 int* p(int*)malloc(4); //p进行相关的判断 *p10;//malloc开辟空间失败,有可能对NULL指针解引用 free(p); pNULL;2、对动态开辟的内存的越界访问 int* p(int*)malloc(40);//10个int if(p!NULL) {int i0;//越界for(…

Linux使用PowerShell模块管理MsSql-Server

1.安装PowserShell 更新包列表 sudo apt-get update 安装依赖: sudo apt-get install -y wget apt-transport-https software-properties-common 下载 key: wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb&…

chatgpt赋能python:Python内置函数:如何查找和使用?

Python内置函数:如何查找和使用? 作为一名有10年Python编程经验的工程师,我想与大家分享一下Python内置函数的使用技巧。Python内置函数是指已经定义好的函数,无需另外安装也无需导入就可以直接在Python中使用的函数。这篇文章将…

linuxOPS基础_linux文本文件查看

vi/vim vim文档编辑操作太多了,可以看这篇单独介绍vim的文章>https://blog.csdn.net/weixin_44368963/article/details/130963920 cat查看文件 命令:cat 作用:查看文件内容 语法:#cat 文件名称 ​ #cat 文件1 文件2 > 文件3 **特别注…