nginx配置vue-router+webpack项目部署访问刷新出现404问题

Nginx+Vuejs(router)使用webpack打包发布(Ubuntu) 1. 准备工作 前面文章已经介绍到怎样在win10下安装部署vuejs的webpack脚手架工具,关于怎样使用vuejs的webpack工具写项目不是本文的重点,现在默认我们已经写好了我们的网站 我的用于学习测试的工程目录: 修改src/router/index.js这个文件中的路由配置:使用history模式和路由基目录base的设置(更多资料可查阅官方文档) /**** src/... 阅读详情

部署背景和问题描述

项目使用的是vue2.0,vue-route,webpack打包
项目部署使用的nginx
问题描述:
正常首页不加index可以访问
如:浏览器输入192.168.0.251可以正常访问并返回
这里写图片描述

但是当按下F5或者刷新页面时就出现如下404错误
这里写图片描述

这还是不是最明显的最明显的如这种目录192.168.0.251/user
基便不刷新而只是访问依然是报的404

原因

打开开发包我们会看到除了index.html根本就不存在如上的index和user文件,当然是找不到的因此就返回了404错误。

vue-router项目的url实现方式

本人并无具体参考vue-router源码,以下内容只是根据项目和当前项目部署需要的经验之谈,如有不对,请各位指正。

涉及到url必然要弄清楚vue-router中url的作用和普通项目的作用原理是否相同。

vue-router项目归根结底是因为vue-router其本身只存在一个index.html文件,index.thml中只会加载一个打包过的js文件,该文件主要执行的路由规则如下:

  1. 获取当前的URL
  2. 获取URL除IP:端口和?之间的部分路径参数(如:http://baidu.com/query?w=1获取到的路径是/query和参数w=1)
  3. 根据路径参数查找路由中是否存在该路径,存在则传入参数(如w=1)给该方法并执行相关js方法进行dom渲染,不存在则返回空内容(和nginx的404不同)
  4. 渲染元素和dom(包括空内容)到index.html的body标签中
  5. 完成渲染呈现页面在客户端(视觉上发生变化)

可以看到整个过程除了URL变动但是实际上html的外层DOM标签是没有变化和重新加载的(body标签和它的父标签),而我们平常的常规项目需要真实的路径对应到项目中的实际文件匹配然后服务器找到后返回给客户端(找不到就报404错误)。

解决思路

因此找到原因就好办了,只需要当服务器发现客户端发来的url时就重定向(服务器重定向)到默认的index.html文件内容并返回给客户端,这样就实现了它的自身的路由功能。

但是也会出现一下问题,比如多个项目使用同一个域名和ip地址的情况,虽然vue项目可以正常访问,但是其他类型的项目显然会问题(一直停留在首页不动,至少是在视觉上不动)。这时就需要根据不同的项目名设置不同的规则,这个内容请参考另外的的文章:nginx配置多个项目(太简单了没写,自行百度)

解决方法

 server {
         listen 80;

         server_name testwx.wangshibo.com;
         root /mnt/app/xm_web;
         index index.html;
        # access_log /var/log/testwx.log main;

        #处理vue-router路径Start
        #如果找不到路径则跳转到@router变量中寻找,找到了就默认进入index.html
        location / {
             try_files $uri $uri/ /index.html last;
             index index.html;
         }
        #处理vue-router路径End

}

配置完成重启,可以成功刷新和点击进入其他页面。

声明:对于vue-router部分的理解并不到位,如有疏漏和错误,请各位拍砖,谢谢。

参考资料:

散尽浮华的博客:vue-route+webpack部署单页路由项目,访问刷新出现404问题

vue-route+webpack部署单页路由项目,访问刷新出现404问题

SPA部署Nginx刷新404问题:从原理到实战的完整解决方案 单页应用(SPA)是现代前端开发的主流架构模式,它通过客户端路由实现页面无刷新切换,提升了用户体验。其核心原理是利用前端路由库(如Vue Router、React Router)在浏览器端管理URL与组件映射,而服务器仅提供静态资源。然而,当SPA部署到Nginx等静态服务器时,刷新非根路径页面常出现404错误,这是因为服务器试图寻找对应物理文件而非返回入口文件。解决这一问题的技术关键在于配置Nginx的try_files指令,将未匹配的请求回退到index.html,让前端路由接管。这一方案不仅解决了部署 阅读详情

相关推荐

Vue路由无法找到的原因及解决方法

路由模式错误:Vue Router支持两种路由模式:hash模式和history模式。如果你使用的是history模式,你需要确保你的服务器已经正确配置,以便在不同的路由之间进行正常的导航。通过仔细检查你的路由配置、路由模式和路由链接,你应该能够解决Vue应用程序中的"找不到路由"问题。确保所有路径和组件的定义都正确,并且你的服务器配置与所使用的路由模式相匹配。标签来生成链接,确保你提供了正确的路由路径。路由配置错误:检查你的路由配置是否正确。确保你已经正确定义了需要使用的路由路径和组件。

2301_79331387的博客 3488

vue打包之后的项目在nginx的部署404,以及无法跳转路由问题

常见的使用场景是在单页应用程序(SPA)中,将所有请求都指向主页(如 index.html),然后由前端路由进行处理。这个配置将 /redirect-me 路径的请求重定向到 http://example.com/new-location,并使用 permanent 参数表示永久重定向。你需要将 /path/to/your/static/files 替换为实际的静态文件路径。这个配置将把所有 /old-path/ 开头的请求重写到 /new-path/,并将原始路径中的内容保留。# 指定静态文件的根目录。

qq_39330397的博客 7822

Vue项目打包部署与Nginx完整配置指南

随着前端工程化的不断演进,Vue.js作为主流的前端框架之一,广泛应用于企业级项目开发。然而,项目开发完成后,如何高效地进行打包构建并部署到生产环境,是每一个前端工程师必须掌握的核心技能。本章将从整体视角出发,引导读者理解Vue项目的打包机制与构建流程,并探讨为何选择Nginx作为前端部署的首选服务器。Vue项目通常通过Vue CLI或Webpack等工具进行打包,最终生成一个静态资源目录(如dist),其中包含HTML、CSS、JavaScript等文件。

weixin_35752233的博客 901

Intellij IDEA 部署Web项目后运行出现HTTP Status 404(找不到对应的路径文件,不是无法访问此网站)

之前抽空搭建了一个java的环境做了个项目,结果重装系统以后,重新部署项目能够运行的时候发现了项目调试404(找不到实际的页面,后来csdn查了一下很常见的问题)给大家推荐一下这个 https://blog.youkuaiyun.com/eaphyy/article/details/72513914 ...

小沈的博客 2162

vue下使用nginx刷新页面404的问题解决

主要介绍了vue下使用nginx刷新页面404的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

从T型结到Wilkinson:5分钟搞懂功分器选型指南(附最新射频测试数据对比)

本文通过对比T型结、电阻型和Wilkinson三种功分器的核心原理与实测数据,提供了清晰的射频功分器选型指南。文章结合最新的2.4GHz ISM频段测试数据,分析了插入损耗、回波损耗和端口隔离度等关键指标,并针对窄带物联网、射频测试及合成系统等不同应用场景,给出了具体的选型建议和实战提醒,帮助工程师根据系统需求做出最优决策。

bush的博客 304

使用nginx部署vue项目后,刷新会找不到页面解决解决方法

整个配置文件和Nginx的位置可能因操作系统和安装方式而有所不同,一般在 Linux 系统下,配置文件路径位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default。当使用Nginx部署Vue项目时,刷新页面可能导致无法找到页面的问题,这是由于Vue Router使用了前端路由的方式导致的。这样配置后,当刷新页面时,Nginx会将请求发送到Vue应用的入口文件,让Vue Router接管路由的处理,确保能够正确加载相应的页面。

qq_55272229的博客 6498

从SRIOV到SIOV:PCIe虚拟化技术下一代革命

如果说SR-IOV是过去十年PCIe虚拟化的“标杆方案”,那SIOV就是为超大规模云数据中心、AI集群量身打造的“破局者”——它解决了SR-IOV难以逾越的扩展性瓶颈,同时平衡了性能、成本与生态兼容性。今天就从“为什么需要SIOV”到“SIOV到底强在哪”,再到“未来要解决什么问题”,做一次全方位深度拆解。

存储随笔 2552

vue-router 启用 history 模式下的开发及非根目录部署

vue-router 的 history 模式是个提高颜值的好东西,没有了 hash 的路由看起来清爽许多。 开发的时候,如果我们使用 devServer 来启动服务,由于一般不共用端口,我们一般不存在非根目录的问题。 而刷新后 404 的问题可以借助 historyApiFallback 来解决。 但当我们项目对外开放时,往往无法在域名根目录下提供服务,这个时候资源的访问路径与开发时的根目录就有...

weixin_34138056的博客 637

Keil 5安装教程(C51与MDK共存)

目录前言MDK的安装C51的安装安装完成后的验证新建C51工程添加C51程序文件编译测试总结 前言 本篇文章将介绍嵌入式开发工具Keil 5的安装方法,并使MDK(Microcontroller Development Kit,开发stm32时会用到)和C51(51单片机C语言软件开发系统)共存。今后使用Keil 5可同时开发51单片机程序和ARM单片机程序,便于学习与从51到32的过渡。 注: 为防止商业纠纷,本篇文章不涉及文中软件的注册破解,请支持正版。 同时为了便于今后更深入的学习,本文不会介绍软件的

xushu_me的博客 6万+

深度学习之常用算子介绍

打开 onnx 模型图,可以看到它是一个有向无环图。除了 Input、Output ,其他都是算子(是操作,而不是节点)在ONNX(Open Neural Network Exchange)模型中,除了输入和输出,其他都是算子(Operations)。算子是表示神经网络模型中的不同操作或层的元素。一个ONNX模型由一系列算子组成,通过连接这些算子来定义模型的计算流程。

ueke1的博客 8459

vue 在nginx下页面刷新出现404问题

vue 在nginx下页面刷新出现404问题,解决在nginx下页面加载了js但是页面显示空白问题解决 一、vue 在nginx下页面刷新出现404 1、如果是在根目录则配置如下 location / {   root /;   index index.html;   try_files $uri $uri/ /index.html } 2.如果是有特定目录 location /xx/xx/ ...

知行合一 6230

openharmony之启动恢复子系统详解

需求: 添加一个名为my_service的自定义服务步骤1: 创建服务配置],],"env": [步骤2: 添加到主配置],"jobs": ["cmds": [步骤3: 验证配置# ✅ 检查配置格式 jq . /system/etc/init/my_service.cfg # 🔄 重新加载配置 begetctl reload # 📊 验证服务状态 begetctl dump_service my_serviceOpenHarmony init进程的完整生命周期。🔄 三阶段启动模型⚙️ 配置体系。

m0_67505153的博客 597

解决vue项目部署到centos后 router-link 刷新当前页面显示404

1.问题: 使用Vue.js框架,利用vue-route结合webpack编写了一个单页路由项目,运维协助在服务器端配置nginx。部署完成后,访问首页没问题,从首页里打开二级页面没问题,但是所有的二级页面打开后,再次刷新,就会出现404现象。 2.原因: 刷新页面时访问的资源在服务端找不到,因为vue-router设置的路径不是真实存在的路径。如上的404现象,是因为在nginx配置的根目录/D...

L-ji的博客 1653

【视频】GStreamer+WebRTC(九):使用NVIDIA硬编解码

2)下载 GStreamer-bad 插件包源码注意要下载和 GStreamer版本对应的插件包3)下载NVIDIA硬编解码SDK最新的SDK下载地址注意 GStreamer 1.24.2 中调用的 NVIDIA Video_Codec_SDK 不是最新的,先使用下面的方法,查看gst-plugins-bad-1.24.2.tar.xz 对应的NVIDIA Video_Codec_SDK 的版本是多少。

郭老二 260

生产环境中redis的SCAN命令如何替代KEYS命令?

本文介绍了使用SCAN命令替代KEYS的完整方案。SCAN通过游标分批迭代,避免KEYS命令遍历整个键空间导致的阻塞风险。文章详细说明了SCAN的基础语法、迭代流程和Java实现示例,强调必须关闭Cursor避免连接泄漏。针对生产环境,提供了COUNT参数调优、客户端去重、集群模式适配等优化建议,并列举了典型错误场景。SCAN通过分批次迭代和游标管理,可安全实现高性能键空间遍历。全文150字。

DN金猿的博客 179

vue-router+webpack部署nginx刷新404问题与解决方案

.问题: 使用Vue.js框架,利用vue-route结合webpack编写了一个单页路由项目,运维协助在服务器端配置nginx。部署完成后,访问首页没问题,从首页里打开二级页面没问题,但是所有的二级页面打开后,再次刷新,就会出现404现象。 2.原因: 刷新页面时访问的资源在服务端找不到,因为vue-router设置的路径不是真实存在的路径。如上的404现象,是因为在nginx配置的根目录...

ty0415的专栏 992

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

vue-route+webpack部署项目,访问刷新出现404问题

问题描述: 前端同事使用Vue.js框架,利用vue-route结合webpack编写了一个单页路由项目,运维协助在服务器端配置nginx。部署完成后,访问首页没问题,从首页里打开二级页面没问题,但是所有的二级页面打开后,再次刷新,就会出现404现象! 问题原因: 刷新页面时访问的资源在服务端找不到,因为vue-router设置的路径不是真实存在的路径。 如上的404现象,是因为在nginx配置的根目录下面压根没有/manage/setup/platform/platform_info这个真实资源存在,这些

Arlo的博客 556

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

vue-route+webpack部署单页路由项目,访问刷新出现404问题

问题描述:前端同事使用Vue.js框架,利用vue-route结合webpack编写了一个单页路由项目,运维协助在服务器端配置nginx。部署完成后,访问首页没问题,从首页里打开二级页面没问题,但是所有的二级页面打开后,再次刷新,就会出现404现象 问题原因:刷新页面时访问的资源在服务端找不到,因为vue-router设置的路径不是真实存在的路径。如上的404现象,是因为在nginx配...

weixin_30824599的博客 885

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Vue Router history模式的配置方法及其原理

始发于我的博客 ryougifujino.com,欢迎访问留言。 vue-router分为hash和history模式,前者为其默认模式,url的表现形式为http://yoursite.com#home,比较难看。后者的url表现形式为http://yoursite.com/home,比较美观。 但如果要使用history模式,我们需要在后端进行额外配置。本文将讨论如何配置以及为什么要这样配置。...

weixin_33913332的博客 5311

Vue中Router路由使用history模式发布后访问404

使用webpack打包发布,网页不能正常访问,先看下路由配置 export default new Router({ mode: 'history', base: '/putian/', routes: [ { path: '/', name: 'HelloWorld', component: HelloWorld }, { path: '/ClusterManage', name: 'ClusterMana

句无声的博客 6432

Nginx部署SPA应用刷新404问题:原理、配置与最佳实践

单页应用(SPA)是现代前端开发的主流架构,它通过前端路由实现页面无刷新切换,提升了用户体验。其核心原理在于利用Hash或History API管理URL状态,由JavaScript动态渲染内容,而非每次请求都从服务器获取新HTML。这种架构在开发环境下运行良好,但在生产部署时,尤其是使用Nginx等静态文件服务器时,常会遇到路由刷新404的典型问题。这是因为Nginx默认会尝试寻找与URL路径对应的真实文件,而SPA只有一个入口文件(如index.html),其他路由路径在服务器上并不存在。为了解决这一工

congji3817的博客 552
上一篇: Springboot实现filter拦截token验证和跨域
下一篇: SpringCloud第一篇-Eureka:服务的注册与发现-单机和集群模式
牧竹子
博客等级 码龄17年 572粉丝 233原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值