解决vue项目nginx部署到非根目录下刷新空白的问题

下面是解决 Vue 项目在 Nginx 部署非根目录下刷新空白的问题的完整攻略。

问题描述

当 Vue 项目部署在 Nginx 上,并且不是在根目录下,比如在 http://example.com/vueapp 目录下时,直接访问路由会导致刷新后页面空白,浏览器控制台提示 404 错误。

原因分析

这是因为 Vue 项目使用的是前端路由,刷新页面时浏览器会向服务器发送请求,并带上当前路径,Nginx 服务器不知道这个路径,会返回 404 错误。

解决步骤

1. 修改 vue.config.js 配置

在 Vue 项目根目录下的 vue.config.js 文件中,加入以下代码:

module.exports = {
  publicPath: '/vueapp/',
  outputDir: 'dist',
};

其中,publicPath 表示打包后 index.html 引入静态资源的路径,即上面的 http://example.com/vueappoutputDir 表示打包后静态资源的输出目录,这里设为 dist

2. 修改 Nginx 配置

在 Nginx 服务器的配置中,根据情况添加以下配置:

location /vueapp/ {
    alias /path/to/vueapp/dist/;

    try_files $uri $uri/ /vueapp/index.html;
}

其中,/path/to/vueapp/ 修改为 Vue 项目打包后静态资源的路径。try_files 配置了请求文件的优先级,首先尝试请求对应的文件,如果没有再请求 /vueapp/index.html

注意:如果 Nginx 配置中已经有了根路径的配置(location / {}),需要将其放在 /vueapp/ 的配置前,否则会覆盖掉 /vueapp/ 的配置。

3. 重新部署 Vue 项目和 Nginx

修改完配置后,需要重新打包并部署 Vue 项目和重启 Nginx 生效。

示例

假设 Vue 项目打包后的静态资源路径为 /var/www/vueapp/dist/,Nginx 的根路径为 /var/www/,Nginx 的域名为 example.com

  • 修改 vue.config.js
module.exports = {
  publicPath: '/vueapp/',
  outputDir: 'dist',
};
  • 修改 Nginx 配置:
location /vueapp/ {
    alias /var/www/vueapp/dist/;

    try_files $uri $uri/ /vueapp/index.html;
}
  • 重新部署 Vue 项目和 Nginx 生效。控制台打印没有错误信息,页面能够正常访问。

总结

综上,解决 Vue 项目在 Nginx 部署非根目录下刷新空白的问题的完整攻略如下:

  1. 修改 vue.config.js 配置:
module.exports = {
  publicPath: '/vueapp/',
  outputDir: 'dist',
};
  1. 修改 Nginx 配置:
location /vueapp/ {
    alias /path/to/vueapp/dist/;

    try_files $uri $uri/ /vueapp/index.html;
}
  1. 重新部署 Vue 项目和 Nginx 生效。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决vue项目nginx部署到非根目录下刷新空白的问题 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • BootStrap栅格系统、表单样式与按钮样式源码解析

    BootStrap栅格系统、表单样式与按钮样式源码解析 BootStrap栅格系统 BootStrap栅格系统是一种响应式的网格布局系统,用于在不同屏幕尺寸下创建灵活的网页布局。它基于12列的网格系统,可以通过添加不同的CSS类来定义不同的布局。 栅格系统的基本结构 栅格系统由行(row)和列(column)组成。行用于包含列,而列则用于放置内容。 <…

    other 2023年7月28日
    00
  • 64位下无法运行32位程序的解决方法 提示未指定提供程序,也没有指派的默认提供程序

    64位下无法运行32位程序的解决方法 在64位操作系统下,有时候会遇到无法运行32位程序的问题。这通常是因为缺少32位程序所需的运行环境或者配置不正确。下面是解决这个问题的完整攻略。 步骤一:安装32位运行环境 首先,你需要安装32位运行环境,以便能够在64位操作系统上运行32位程序。具体的步骤如下: 打开控制面板,点击\”程序\”或\”程序和功能\”。 在…

    other 2023年7月28日
    00
  • ios获取版本号(swift和oc两种)

    iOS获取版本号(Swift和Objective-C两种实现) 在iOS开发中,我们经常需要获取应用程序的版本号,以及构建版本号。下面将演示如何通过Swift或Objective-C来实现。 Swift实现 获取Version和Build号 在Swift中,我们可以通过Bundle类的静态变量main来获取应用程序的版本号和构建版本号,具体代码如下: if …

    其他 2023年3月28日
    00
  • maven 指定version不生效的问题

    Maven 指定 version 不生效的问题攻略 在使用 Maven 构建项目时,有时候我们需要指定依赖库的版本号,但是发现指定的版本号并没有生效。这可能是由于以下几个原因导致的: 1. 依赖库版本冲突 当项目中存在多个依赖库,且它们之间存在版本冲突时,Maven 可能会选择一个不是我们所期望的版本。为了解决这个问题,我们可以使用 Maven 提供的 De…

    other 2023年8月3日
    00
  • 腾讯云服务器部署前后分离项目之前端部署

    下面我将详细讲解“腾讯云服务器部署前后分离项目之前端部署”的完整攻略,具体步骤如下: 准备工作 在腾讯云上购买一台云服务器,并开启相关服务。 安装Node.js和Git工具。 前端代码打包 安装前端依赖: bash npm install 执行前端代码打包命令: bash npm run build 执行完命令后,将会在项目根目录下生成一个dist文件夹,里…

    other 2023年6月27日
    00
  • 加载gif动画的三种方式

    加载GIF动画的三种方式的完整攻略 GIF动画是一种常见的动画格式,可以用于网站、应用程序和其他数字媒体中。本文将介绍加载GIF动画的三种方式,包括使用HTML、CSS和JavaScript。在介绍每种方式时,将提供至少两个示例说明。 使用HTML加载GIF画 使用HTML加载GIF动画是最简单的方法之一。可以使用<img>标签来加载GIF动画。…

    other 2023年5月9日
    00
  • .NET 8新预览版使用 Blazor 组件进行服务器端呈现(项目体验)

    .NET 8新预览版使用 Blazor 组件进行服务器端呈现(项目体验) Blazor 是一种在Web浏览器中运行 .NET代码的方法,可以在服务器上对 Blazor 组件进行呈现。这意味着可以使用 C# 和 .NET框架进行服务器端呈现,并将 UI 组件传输到客户端进行交互。 下面是使用 .NET 8 新预览版进行 Blazor 服务器端呈现的完整攻略: …

    other 2023年6月27日
    00
  • hmailserver邮件服务器搭建

    hMailServer邮件服务器搭建 在网络科技蓬勃发展的今天,电子邮件成为了人们日常必不可少的通信方式之一。而如果你是一家公司的网站管理员,可能需要自建邮件服务器来管理公司内部的邮件。本文将介绍如何使用hMailServer搭建一台邮件服务器,以便于管理公司的邮件。 环境要求 在开始搭建之前,请确保你的电脑符合以下的要求: 一台运行Windows操作系统的…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部