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

yizhihongxing

下面是解决 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日

相关文章

  • apk是什么文件格式?.apk文件怎么打开?

    APK是什么文件格式? APK是Android应用程序包(Android Package)的缩写,它是一种用于在Android操作系统上安装和分发应用程序的文件格式。APK文件实际上是一个压缩文件,其中包含了应用程序的所有组件和资源,如代码、图像、音频和视频等。 .APK文件怎么打开? 要打开APK文件,您可以按照以下步骤进行操作: 使用Android设备打…

    other 2023年8月6日
    00
  • 简单谈谈Golang中的字符串与字节数组

    在Golang中,字符串和字节数组都是同样重要的数据类型。但是,在使用它们时,需要注意一些细节。本文将从字符串和字节数组的定义、初始化和操作等方面,为你提供一份完整攻略。 定义 字符串的定义 字符串是字符的序列。在Golang中,字符串的定义非常方便,只需使用双引号或反引号括起来即可。例如: str1 := "Hello, world!"…

    other 2023年6月20日
    00
  • Android拍摄照片后返回缩略图的方法

    当使用Android拍摄照片后,可以通过以下步骤获取返回的缩略图: 首先,确保已经在AndroidManifest.xml文件中添加了相应的权限: <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" /> 在拍摄照片的Activ…

    other 2023年9月6日
    00
  • 文卓爷模拟器打开报错等常见问题及其解决办法

    文卓爷模拟器打开报错等常见问题及其解决办法 文卓爷模拟器是一款功能强大的模拟器,但在使用过程中也有可能会出现一些问题,下面我们来看下常见问题及其解决办法。 1. 模拟器无法正常启动 问题描述 启动文卓爷模拟器时,出现错误提示,可能是黑屏、闪退等。 解决办法 点击电脑桌面上的“文卓爷模拟器”图标,并右键以管理员身份运行; 检查电脑是否联网,可能需要更新模拟器版…

    other 2023年6月27日
    00
  • MySQL如何从5.5升级到8.0(使用命令行升级)

    首先需要说明的是,在进行 MySQL 升级前,务必进行数据备份,以防数据丢失。 接下来,我们按照以下步骤进行 MySQL 5.5 到 8.0 的升级: 步骤一:安装 MySQL 8.0 首先需要安装 MySQL 8.0,并确保安装目录下存在 bin 目录。可以通过以下命令来验证: ls /usr/local/mysql/bin 如果输出了一系列二进制文件,则…

    other 2023年6月27日
    00
  • go项目中环境变量的配置

    下面是详细讲解“go项目中环境变量的配置”的完整攻略。 简介 在编写Go项目时,经常会使用环境变量来配置应用程序的行为。环境变量是一种在不同环境中传递配置信息的常见方式。Go语言提供了访问和使用环境变量的方法。 配置环境变量 在Go语言中,使用os包中的Setenv和Getenv方法来设置和获取环境变量。 设置环境变量的方法如下: import "…

    other 2023年6月27日
    00
  • c#invoke方法

    C#中的Invoke方法 在C#中,Invoke方法是一种用于在UI线程上执行代码的方法。它是Control类的一个成员,可以任何继承自Control类对象上。Invoke方法的定义如下: public object Invoke(Delegate method, params object[] args); 在这个定义中,method参数是委托,它指定要在…

    other 2023年5月6日
    00
  • linux取消挂载命令

    Linux取消挂载命令 在 Linux 系统中,挂载命令是一个非常重要的命令,它用于将文件系统附加到指定的挂载点。然而,在有时候我们需要取消挂载指定的文件系统,该如何操作呢? 取消挂载命令 取消挂载命令是 umount 命令,它会从文件系统挂载表中移除指定的文件系统。取消挂载命令的一般语法如下: umount 挂载点 其中, umount 代表取消挂载命令,…

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