当前位置: 首页 > news >正文

vue2打包带路径的项目,刷新404问题解决

问题描述

        Vue 2 项目打包时设置了 publicPath: '/web/',并通过 Nginx 配置访问 http://ip/web 时可以正常加载首页,但刷新页面时出现 404 错误

原nginx的配置 

location /web {
    alias /www/dist; # 静态文件地址
    try_files $uri $uri/ /index.html;
    index index.html index.htm;
}

vue的vue.config.js

module.exports = {
// 例如 https://www.xxx.com。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.xxx.com/web,则设置 /web/。
  publicPath: '/web/',
  #省略
}

问题原因

  • 当访问 http://ip/web 时,Nginx 会正确返回 /www/dist/index.html

  • 但当刷新页面或直接访问子路由(如 http://ip/web/about)时,Nginx 会尝试查找 /www/dist/about 文件,但该文件不存在,因此返回 404 错误。

解决方法

需要在 try_files 中正确处理子路径 /web,将所有请求重定向到 /web/index.html

将 try_files 的路径改为 /web/index.html,确保所有请求都返回 index.html,由 Vue 路由处理。 

 nginx配置

location /web {
    alias /www/dist; # 静态文件地址
    try_files $uri $uri/ /web/index.html; # 处理子路径
    index index.html index.htm;
}

配置说明

  1. alias /www/dist;

    • 将 /web 路径映射到 /www/dist 目录。

  2. try_files $uri $uri/ /web/index.html;

    • $uri:尝试匹配请求的文件。

    • $uri/:尝试匹配请求的目录。

    • /web/index.html:如果以上都找不到,则返回 /web/index.html,由 Vue 路由处理。

  3. index index.html index.htm;

    • 默认加载 index.html 或 index.htm

验证步骤

  1. 修改 Nginx 配置文件后,重新加载 Nginx:

    sudo nginx -s reload
  2. 访问 http://ip/web,确保首页可以正常加载。

  3. 刷新页面或直接访问子路由(如 http://ip/web/about),确保不再出现 404 错误。


注意事项

  1. alias 和 root 的区别

    • alias 会完全替换 location 的路径。

    • root 会将 location 的路径附加到指定的目录后。

    • 例如:

      location /web {
          alias /www/dist; # /web -> /www/dist
      }

      等同于:

      location /web {
          root /www; # /web -> /www/web
      }

  2. publicPath 配置

    • 确保 Vue 项目的 publicPath 配置为 /web/,与 Nginx 的 location /web 一致。


总结

  • 修改 Nginx 配置,将 try_files 的路径改为 /web/index.html

  • 确保 Vue 项目的 publicPath 配置为 /web/

  • 重新加载 Nginx 并验证页面刷新是否正常。


文章转载自:

http://1Sz0tLOL.qztdz.cn
http://d0c5YzXx.qztdz.cn
http://H2xgHqyK.qztdz.cn
http://jnhR5qWB.qztdz.cn
http://g3uzGtqw.qztdz.cn
http://p7viVz7b.qztdz.cn
http://wal6Vh2z.qztdz.cn
http://F0BSIcjr.qztdz.cn
http://W6yEnAlI.qztdz.cn
http://O69DHmZU.qztdz.cn
http://0WRQ7cBE.qztdz.cn
http://FkGKmzwt.qztdz.cn
http://MQuMC8wv.qztdz.cn
http://xX6nbisB.qztdz.cn
http://7qAkO4kG.qztdz.cn
http://AW6moRFo.qztdz.cn
http://1LQsM2n2.qztdz.cn
http://MYc2Wb9p.qztdz.cn
http://zlzzRlII.qztdz.cn
http://skS00nQa.qztdz.cn
http://8VQrMLul.qztdz.cn
http://AgxrxAnM.qztdz.cn
http://cFzGtnUh.qztdz.cn
http://WhzTU357.qztdz.cn
http://Bi0gVH0X.qztdz.cn
http://lmU5b9Rj.qztdz.cn
http://ike4HRpP.qztdz.cn
http://V8L5tMhC.qztdz.cn
http://RGh0lxQU.qztdz.cn
http://UwUSWDBW.qztdz.cn
http://www.dtcms.com/a/14933.html

相关文章:

  • unity 安装Entities
  • 适用于 WinForms 的浏览器控件
  • 【深度学习】Java DL4J 2024年度技术总结
  • ElementUI el-popover弹框背景色设置
  • Kimi实战1/100 - 读接口文档,编写接口
  • 对贵司需求的PLC触摸的远程调试的解决方案
  • 算法06-回溯算法
  • 京东 旋转验证码 分析
  • 伯克利 CS61A 课堂笔记 09 —— Data Abstraction
  • 图书管理项目(spring boot + Vue)
  • Cisco Catalyst交换机和ASR路由器上加vty下的列表时最后的vrf-also命令作用
  • DedeBIZ系统审计小结
  • RabbitMQ的死信队列的产生与处理
  • PHP 超级全局变量
  • 手机用流量怎样设置代理ip?
  • ArcGIS基础知识之ArcMap基础设置——ArcMap选项:常规选项卡设置及作用
  • 蓝桥杯篇---温度传感器 DS18B20
  • visual studio导入cmake项目后打开无法删除和回车
  • 51-ArrayList
  • 【LeetCode Hot100 双指针】移动零、盛最多水的容器、三数之和、接雨水
  • 人工智能之深度学习的革命性突破
  • 【Stable Diffusion部署至GNU/Linux】安装流程
  • Dify 是什么?Dify是一个开源的LLM应用开发平台,支持快速搭建生成式AI应用,具有RAG管道、Agent功能、模型集成等特点
  • 计算机网络,大白话
  • 代码随想录算法【Day44】
  • 2.13学习记录
  • Docker Desktop Windows 之 安装 SqlServer
  • RabbitMQ 延迟队列
  • 全功能Python测试框架:pytest
  • 使用 AlexNet 实现图片分类 | PyTorch 深度学习实战