前端配置的 404问题

简介: 前端配置的 404问题

1. 前言

  1. 上篇文章写了前端部署
  2. 部署完 有时候会遇到 404 问题 这次来聊聊
  3. 404就是找到不到地址所以一般和前端路由配置有关

2. 场景

  1. vue项目在本地时运行正常,但部署到服务器中,刷新页面,出现了404错误
  2. 先定位问题,HTTP 404 错误意味着链接指向的资源不存在
  3. 但是呢问题在于为什么不存在?
  4. 且为什么只有history模式下会出现这个问题?
  5. 打包放到 node+express下面玩的时候或者通过uniApp打包成安卓 iOS 包的时候也注意不要用history模式
    hash是模式正确的

3. Vue是属于单页应用(single-page application)

  1. 前端路由
  2. 而SPA是一种网络应用程序或网站的模型,所有用户交互是通过动态重写当前页面,不管我们应用有多少页面打包后都只会产出一个index.htm
  3. nginx配置为例 前端部署

server {
  listen  80;
  server_name  www.yzs.com;
  location / {
    index  /data/dist/index.html;
  }
}
  1. 可以根据 nginx 配置得出,当我们在地址栏输入 www.yzs.com时,这时会打开我们 dist 目录下的 index.html 文件,
  2. 然后我们在跳转路由进入到 www.yzs.com/login
  3. 关键在这里,当我们在 yzs.com/login 页执行刷新操作,
    nginx location 是没有相关配置的,
    所以就会出现 404 的情况

4. 为什么hash模式下没有问题

  1. router hash 模式我们都知道是用符号#表示的,
    如 yzs.com/#/login, hash 的值为 #/login
  2. hash 虽然出现在 URL 中,但不会被包括在 HTTP 请求中,对服务端完全没有影响,因此改变 hash 不会重新加载页面
  3. hash 模式下,仅 hash 符号之前的内容会被包含在请求中,
    如 yzs.com/#/login 只有 yzs.com 会被包含在请求中 ,
    因此对于服务端来说,即使没有配置location,也不会返回404错误

5. 解决方案

  1. 定位问题:产生问题的本质是因为我们的路由是通过JS来执行视图切换的,
    当我们进入到子路由时刷新页面,web容器没有相对应的页面此时会出现404
  2. 所以我们只需要配置将任意页面都重定向到 index.html,把路由交由前端处理
    也就是 部署的时候 不要忘记配置路由
  3. 对nginx配置文件.conf修改,添加try_files uri/ /index.html;

对nginx配置文件.conf修改,添加try_files $uri $uri/ /index.html;
  • 修改完配置文件后记得配置的更新

nginx -s reload

*注意 为了避免这种情况 前端配置 404 页面

{
    path:"/notfound",
    name:"NotFound",
    component:()=>import("../views/NotFound.vue")
  },
  {
    // vue-router 3x
    // path:"*"
    // vue-router 4x
    path:"/:pathMatch(.*)/",
    // redirect 重定向 
    // redirect:"/notfound"
    redirect:{
      name:"NotFound",
      // path:"/notfound"
    }
  }
  • 其他 服务器Apache、nodejs 配置也都差不离
  1. 对于 Apache 服务器,可以使用 .htaccess文件来配置路由重定向

  • 其他原因导致的404

6. 静态资源路径问题

  1. 以上属于 路 由配置问题的范畴 还有其他原因也会导致 404
  2. 当部署 Vue 项目时,确保服务器正确地提供静态资源文件(如 JavaScript、CSS 和图片等)。如果路径配置不正确,浏览器无法正确加载这些静态资源,导致 404 错误
  • 解决方案
  1. 检查部署后的静态资源路径是否与 Vue 项目中的路径一致。
  2. 可以尝试使用绝对路径或相对路径来引用静态资源,确保路径的正确性。
  3. 同时,检查服务器的静态资源配置,确保服务器能够正确提供这些资源。

7. 索引文件缺失

  1. vue 项目通常会有一个入口文件(如 index.html),用于加载 Vue 应用的 JavaScript 文件和其他静态资源。404 错误
  2. 如果部署后缺少这个索引文件,或者服务器没有正确配置以提供该文件,刷新页面时会导致  404 错误
  • 解决方案
  1. 检查部署后的文件是否包含正确的入口文件,如 index.html。
  2. 确保服务器配置正确,可以通过服务器的默认文档(如 Apache 的 DirectoryIndex)或其他方式指定入口文件。

8. 缓存问题

  1. 有时浏览器可能会缓存旧版本的静态资源,而不是从服务器重新获取更新后的文件。
  2. 当部署新版本时,浏览器仍然使用旧版本的缓存文件,导致请求的资源无法找到
  • 解决方案
  1. 在部署新版本后,可以使用一些方法来强制浏览器重新获取最新的静态资源。
  2. 例如,可以通过修改文件名、添加查询参数或使用版本号等方式,使浏览器认为这是一个新的资源,从而不使用缓存的旧版本

9.  还不行 呢? 咋知道是哪种呢?

  1. 查看服务器的日志文件呗

参考资料

前端部署

前端路由


初心

我所有的文章都只是基于入门,初步的了解;是自己的知识体系梳理,如有错误,道友们一起沟通交流;
如果能帮助到有缘人,非常的荣幸,一切为了部落的崛起;
共勉
相关文章
|
9月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
8056 23
|
11月前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
511 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
11月前
|
Dart 前端开发 架构师
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
554 26
|
11月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
362 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
11月前
|
前端开发 NoSQL Java
【Java若依框架】RuoYi-Vue的前端和后端配置步骤和启动步骤
本文介绍了如何配置和启动基于Java的若依(RuoYi)项目,涵盖后端和前端的详细步骤。首先,准备Redis、MySQL以及IDE(如Idea和VS)。接着,通过GitHub获取代码并导入到IDE中,执行必要的SQL文件和配置数据库密码。然后,启动Redis并进行相关配置。最后,按照前端配置步骤克隆前端代码库,打开终端执行命令完成前端配置。整个过程详细记录了每一步的操作,帮助开发者顺利部署若依项目。 如果你觉得有帮助,请点赞、关注和收藏,这将是我持续分享的动力!
5691 4
|
缓存 前端开发 JavaScript
前端性能优化:Webpack与Babel的进阶配置与优化策略
【10月更文挑战第28天】在现代Web开发中,Webpack和Babel是不可或缺的工具,分别负责模块打包和ES6+代码转换。本文探讨了它们的进阶配置与优化策略,包括Webpack的代码压缩、缓存优化和代码分割,以及Babel的按需引入polyfill和目标浏览器设置。通过这些优化,可以显著提升应用的加载速度和运行效率,从而改善用户体验。
301 6
|
缓存 监控 前端开发
前端工程化:Webpack与Gulp的构建工具选择与配置优化
【10月更文挑战第26天】前端工程化是现代Web开发的重要趋势,通过将前端代码视为工程来管理,提高了开发效率和质量。本文详细对比了Webpack和Gulp两大主流构建工具的选择与配置优化,并提供了具体示例代码。Webpack擅长模块化打包和资源管理,而Gulp则在任务编写和自动化构建方面更具灵活性。两者各有优势,需根据项目需求进行选择和优化。
327 7
|
缓存 前端开发 JavaScript
前端工程化:Webpack与Gulp的构建工具选择与配置优化
【10月更文挑战第27天】在现代前端开发中,构建工具的选择对项目的效率和可维护性至关重要。本文比较了Webpack和Gulp两个流行的构建工具,介绍了它们的特点和适用场景,并提供了配置优化的最佳实践。Webpack适合大型模块化项目,Gulp则适用于快速自动化构建流程。通过合理的配置优化,可以显著提升构建效率和性能。
235 2
|
JavaScript 前端开发 网络架构
|
编解码 前端开发 UED
前端:移动端视口配置
移动端视口配置是指针对移动设备浏览器设置视口的宽度、高度和缩放等属性,以确保网页能根据不同的屏幕尺寸和分辨率进行适配,提供更好的用户体验。合理的视口配置是移动优先设计的关键环节。

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    570
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    228
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    220
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    159
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    269
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    401
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    175
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    111
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    187
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    257