vue3项目history路由模式部署上线405、刷新404问题(包括部分页面刷新404问题)

一、找不到js模块

解决方法:配置Nginx配置文件:

// root /your/program/path/dist
root /www/wwwroot/my_manage_backend_v1/dist;
二、刷新页面导致404问题(Not found)

经过一系列配置后发现进入页面一切正常,包括路由前进和回退,但是一刷新页面就会出现404 页面丢失问题:

解决方法:配置Nginx配置文件:

location / {try_files $uri $uri/ /index.html;...
}
三、405问题(Not allowed)

部署后发现能够进入登录页面即index.html页面,但每次点击登录就报错405问题:

要是你前端和后端确保没有配置错误,这个问题一般就是Nginx配置文件有问题,产生这种问题的前提是你采用上面两个方法解决了上面两个问题,由于一开始你的接口请求跨域配置也放在了“ location /”里面,如下:

# HTTP反向代理相关配置开始 >>>location ~ /purge(/.*) {proxy_cache_purge cache_one $host$request_uri$is_args$args;}location / {root /www/wwwroot/my_manage_backend_v1/dist;try_files $uri $uri/ /index.html;proxy_pass http://127.0.0.1:3007;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header REMOTE-HOST $remote_addr;add_header X-Cache $upstream_cache_status;proxy_set_header X-Host $host:$server_port;proxy_set_header X-Scheme $scheme;proxy_set_header X-Forwarded-Method $request_method; # 确保请求方法被代理proxy_connect_timeout 30s;proxy_read_timeout 86400s;proxy_send_timeout 30s;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}# HTTP反向代理相关配置结束 <<<

这样就导致当你想请求动态接口js资源时,你会发现js可能会执行成功,但页面没有跳转,url地址也没变,还有的接口会报错405,这是因为上面仅仅配置了 ‘location /’,导致所有进来的http请求都去try_files了,**并没有正确的代理到后端服务,**因此出现上述问题。解决方法如下:

    # 前端路由代理配置(因为采用了history路由模式)静态资源location / {root /www/wwwroot/my_manage_backend_v1/dist;try_files $uri $uri/ /index.html;}# 后端接口代理配置location /api {proxy_pass http://127.0.0.1:3007;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /user {proxy_pass http://127.0.0.1:3007;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /setting {proxy_pass http://127.0.0.1:3007;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}// ...

将静态页面index.html放在“/”根目录下,如果前端发起请求时没有更准确的路径与之匹配,就采用这个文件匹配;

此外,后端接口也就是各个路由模块也需要配置对应的路径,以至于将它们代理到服务器上,进行相应,注意:每个路由模块都要挂载,一般在app.js里面,可以看看有哪些路由模块。

四、最后总结一下

上面这种配置在前端路由和后端接口前缀一致时,也会产生404问题(页面展示 not get/post),因为当你获取某个页面路由时比如/setting,由于Nginx里面配置了代理服务 location /setting, 这会代理到到接口请求,当然就不能获取页面资源了。解决这个问题的根本方法:

后端里面:每个路由模块都加一个统一的前缀,比如 ‘/api’;

前端里面:在封装axios时,里面的baseURL: `${import.meta.env.VITE_API_BASEURL}/api` ,做一个拼接就好了,这样可以不用一个个在每个接口请求的前面加 /api了(毕竟开发环境时,好多人不加api)。

Nginx配置:上面处理完之后,就等于所有后端接口都在 /api下面了,前端直接 / 这个路径获取,后端只需要一个代理 location /api 就好了,如下配置:

    # 前端路由代理配置(因为采用了history路由模式)静态资源location / {root /www/wwwroot/my_manage_backend_v1/dist;try_files $uri $uri/ /index.html;}# 后端接口代理配置location /api {proxy_pass http://127.0.0.1:3007;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}

至此,完全解决~

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务篇-深入了解 XXL-JOB 分布式任务调度的具体使用(XXL-JOB 的工作流程、框架搭建)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 XXL-JOB 调度中心概述 1.2 XXL-JOB 工作流程 1.3 Cron 表达式调度 2.0 XXL-JOB 框架搭建 2.1 XXL-JOB 调度中心的搭建 2.2 XXL-JOB 执行器的搭建 2.3 使用调度中心…

JS中若干相似特性的区别

Object.is与的区别? 其他时候都相等 字符串concat()和号有什么区别? 数组at和直接索引区别 at里是负值,计算方法是:数组的长度加这个负值,得到的数作为索引值 substring与slice的区别 substring是负值,则视为0,等于全部复制 slice是负值,则从后往前复制,-2就是复制最后2个字…

Fuel库实战:下载失败时的异常处理策略

Fuel库作为一个轻量级的Kotlin HTTP客户端库&#xff0c;因其简洁的API和强大的功能而受到开发者的青睐。然而&#xff0c;网络请求总是伴随着失败的风险&#xff0c;比如网络不稳定、服务器错误、资源不存在等。因此&#xff0c;合理地处理这些异常情况对于提升用户体验和应用…

vscode插件更新特别慢的问题

点击插件标题去网页查看 命令行安装 D:\Software\VSCode\Code.exe --extensions-dir "D:\Software\VSCode\extendions" --install-extension Vue.volar-2.2.0.vsix安装完成之后重启vs code即可 参考 https://www.cnblogs.com/yiquanfeng/p/18218722

2.利用docker进行gitlab服务器迁移

一、Docker安装 安装Ubuntu 22.04.3 LTS \n \l 1、旧版本安装包清理 sudo apt-get remove docker docker-engine docker.io containerd runc当你卸载Docker时&#xff0c;存储在/var/lib/docker/中的图像、容器、卷和网络不会自动删除。如果你想从一个干净的安装开始&#x…

大型语言模型(LLMs)演化树 Large Language Models

大型语言模型&#xff08;LLMs&#xff09;演化树 Large Language Models flyfish 下面的图来自论文地址 Transformer 模型&#xff08;如 BERT 和 GPT-3&#xff09;已经给自然语言处理&#xff08;NLP&#xff09;领域带来了革命性的变化。这得益于它们具备并行化能力&…

springboot477基于vue技术的农业设备租赁系统(论文+源码)_kaic

摘 要 使用旧方法对农业设备租赁系统的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在农业设备租赁系统的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。这次开发的农…

如何在 Ubuntu 22.04 上安装和使用 Composer

简介 如果你是一名 PHP 开发者&#xff0c;想要简化你的项目依赖管理&#xff0c;那么 Composer 是一个必不可少的工具。Composer 可以简化包管理&#xff0c;并允许你轻松地将外部库集成到你的项目中。 本教程将向你展示如何在 Ubuntu 22.04 操作系统上安装 Composer&#x…

16_HTML5 语义元素 --[HTML5 API 学习之旅]

HTML5 引入了许多新的语义元素&#xff0c;这些元素有助于创建结构更清晰、更具描述性的网页。语义化 HTML 不仅改善了代码的可读性&#xff0c;还增强了搜索引擎优化&#xff08;SEO&#xff09;&#xff0c;提高了无障碍访问性&#xff0c;并使得开发者更容易理解和维护代码。…

国标GB28181视频监控平台与Liveweb视频监控汇聚平台对接方案

应急管理部门以“以信息化推动应急管理能力现代化”为总体目标&#xff0c;加快现代信息技术与应急管理业务深度融合&#xff0c;全面支持现代应急管理体系建设&#xff0c;这不仅是国家加强和改进应急管理工作的关键举措&#xff0c;也是应对日益严峻的应急管理形势和满足公众…

内部知识库的未来展望:技术融合与用户体验的双重升级

在当今数字化飞速发展的时代&#xff0c;企业内部知识库作为知识管理的关键载体&#xff0c;正站在变革的十字路口&#xff0c;即将迎来技术融合与用户体验双重升级的崭新时代&#xff0c;这一系列变化将深度重塑企业知识管理的格局。 一、技术融合&#xff1a;开启知识管理新…

EasyGBS国标GB28181公网平台P2P远程访问故障诊断:云端服务端排查指南

随着信息技术的飞速发展&#xff0c;视频监控领域正经历从传统安防向智能化、网络化安防的深刻转变。EasyGBS平台&#xff0c;作为基于国标GB28181协议的视频流媒体平台&#xff0c;为用户提供了强大的视频监控直播功能。然而&#xff0c;在实际应用中&#xff0c;P2P远程访问可…

HW护网分析研判思路,流量告警分析技巧

《网络安全自学教程》 这篇文章&#xff0c;写给每一个「护网黑奴」&#xff0c;为初次护网的小伙伴普及一下护网工作内容&#xff0c;提供一些简单的分析思路。 护网分析研判思路 1、护网组织架构和责任划分1.1、安全监控1.2、分析研判1.3、应急处置 2、分析研判2.1、判断告警…

springBoot发布https服务及调用

一、服务端发布https服务 1、准备SSL证书 &#xff08;1&#xff09;自签名证书&#xff1a;如果你只是用于开发或测试环境&#xff0c;可以生成一个自签名证书。 &#xff08;2&#xff09;CA 签名证书&#xff1a;对于生产环境&#xff0c;应该使用由受信任的证书颁发机构 …

Web 第一次作业 初探html 使用VSCode工具开发

目录 初探html? 代码展示&#xff1a; 初探html 大多数代码都比较冗长 不是很简洁 还有许多标签功能不会使用 记录一下成长过程 哈哈哈哈哈&#xff01;<–_–> 代码展示&#xff1a; 12.10首次确定书写对象 牢9门 <!DOCTYPE html> <html lang"en&quo…

分别查询 user 表中 avatar 和 nickname 列为空的用户数量

文章目录 1、要查询 user 表中 avatar 列为空的用户数量2、要查询 user 表中 nickname 列为空的用户数量 1、要查询 user 表中 avatar 列为空的用户数量 好的&#xff0c;要查询 user 表中 avatar 列为空的用户数量&#xff0c;你可以使用以下 SQL 查询语句&#xff1a; SELE…

【批量生成WORD和PDF文件】根据表格内容和模板文件批量创建word文件,一次性生成多个word文档和批量创建PDF文件

如何按照Word模板和表格的数据快速制作5000个word文档 &#xff1f; 在与客户的合作的中需要创建大量的合同&#xff0c;这些合同的模板大概都是一致的&#xff0c;是不是每次我们都需要填充不一样的数据来完成&#xff1f; 今天用表格数据完成合同模板的填充&#xff0c;批量…

DX12 快速教程(2) —— 渲染天蓝色窗口

快速导航 新建项目 "002-DrawSkyblueWindow"DirectX 12 入门1. COM 技术&#xff1a;DirectX 的中流砥柱什么是 COM 技术COM 智能指针 2.创建 D3D12 调试层设备&#xff1a;CreateDebugDevice什么是调试层如何创建并使用调试层 3.创建 D3D12 设备&#xff1a;CreateD…

【MySQL】7.0 入门学习(七)——MySQL基本指令:帮助、清除输入、查询等

1.0 help &#xff1f; 帮助指令&#xff0c;查询某个指令的解释、用法、说明等。详情参考博文&#xff1a; 【数据库】6.0 MySQL入门学习&#xff08;六&#xff09;——MySQL启动与停止、官方手册、文档查询 https://www.cnblogs.com/xiaofu007/p/10301005.html 2.0 在cmd命…

鸿蒙开发:了解帧动画

前言 所谓帧动画&#xff0c;就是类似播放电影一样&#xff0c;一帧一帧的进行播放&#xff0c;相对于属性动画&#xff0c;其每一帧&#xff0c;我们都可以进行设置相关的属性值&#xff0c;并且具有暂停播放&#xff0c;继续播放的优点&#xff0c;而且还具备事件的实时响应&…