nginx服务器上部署vue项目,刷新或者打开新窗口时出现404的解决方法

前言

  • 最进写了一个小项目,前端用vue来写的,后端用SSM写的,后端的项目已经在服务器正常运行起来了,而前端一直在Idea上运行,还没有对项目打包在生产环境运行。
  • 突发奇想,想把前端的项目也部署在服务器上运行。我先在本地模拟部署了一下,发现在打开新窗口或者界面刷新的时候出现了404的错误。 在这里插入图片描述

问题分析和解决方案

  • 404异常表示我们的服务器上没有对应的URL资源,我们发现当前刷新的路径是localhost:8888/home,在nginx的配置中默认访问dist/index.html,在初次访问时,路由到home界面。
location / {
      root   dist;
      index  index.html index.htm;
 }
  • 在dist目录下没有localhost:8888/home 的对应资源。
    在这里插入图片描述
  • 分析到这里,其实原因已经出来了,Vue是单页面应用(SPA,只有一个index页面),但是要实现界面的切换,就必须使用VueRouter(路由),在vue中其路由默认使用的是hash模式,会在URL中嵌入#号,目的是为了防止向服务器发送请求,而此时我们用的是history模式,该模式下的URL会正常的向服务器发送请求,而服务器中却没有对应路径的资源,因此就出现了404。
    所以,第一种解决方案就是不使用history模式

// 创建路由对象
// http://localhost:8888/#/home hash不会向服务器发送请求
const router = new VueRouter({
	// mode: "history",
	routes,
})
  • 但是,hash路径看着有点不顺眼!使用history模式应该怎么解决?作为单页面的应用,无论浏览器路径怎么改变,浏览器本质上还是在index.html页面,并不是真正的访问当前看到的URL资源,所以我们只需要给服务器在访问不到资源的时候,仍然访问index.html即可!
  • 在nginx.conf添加try_files $uri $uri/ /index.html;
 location / {
        root   dist;
        index  index.html index.htm;
        # 大概意思就是uri怎么改变都返回index.html页面
	    try_files $uri $uri/ /index.html; 
 }

至于其他服务器,配置方式可能不同,但是基本原理都是一样的!

注意:这么配置访问有一个问题——所有匹配不到的URL路径都会返回index.html。具体解决办法可参考官方文档,里面有更详细的说明:HTML5 History 模式

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当使用nginx部署vue项目刷新页面或访问路由配置页面可能会出现404错误。这是因为vue项目属于单页面开发,只有一个index.html文件。解决这个问题很简单,只需要将访问重定向到index.html页面,然后由index.html处理对应的路由跳转。可以通过修改nginx配置文件来实现。首先,在nginx配置文件中添加以下代码: ``` location / { try_files $uri $uri/ /index.html; } ``` 这样就可以解决刷新页面出现404错误的问题。然后,重启nginx服务器使配置生效。这样就完成了nginx部署vue项目解决刷新404的问题。\[1\]\[3\] #### 引用[.reference_title] - *1* [nginx部署vue项目刷新页面404](https://blog.csdn.net/qq_45029459/article/details/129014641)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Nginx部署Vue项目以及解决刷新页面404问题](https://blog.csdn.net/qq_27985607/article/details/86608392)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [五步用Nginx部署Vue项目及动态路由刷新404问题解决](https://blog.csdn.net/weixin_54218079/article/details/125755795)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值