vue history 模式打包部署在域名的二级目录的配置指南

yizhihongxing

Vue.js是一个现代化的前端框架,在开发过程中,常常需要部署到服务器上面,正常情况下路由模式一般使用的是哈希(#)模式,但是对于希望使用history模式进行路由的同学,部署在二级目录上面还是比较复杂的,下面是对此的一些详细讲解。

原理介绍

Vue.js 使用 HTML5 的 History API 特性,它允许在浏览历史记录中向前或向后切换,而不是在 URL 中添加哈希值来模拟一个完整的 URL 的变化。

但是,在应用程序部署到服务器的子目录时,设置 base URL 是非常重要的。

例如,如果应用程序的位置是 http://www.example.com/app/,则应该设置 router 的 键 base: '/app/'。

此时,当在页面中进行路由跳转时,Vue Router 会知道它需要添加 '/app/' 前缀来构建正确的 URL。

部署步骤

1.设置 Vue Router

在设置 Vue Router 时,我们需要使用 base 选项来指定我们部署到二级目录的 URL 前缀,例如:

const router = new VueRouter({
  mode: 'history',
  base: '/subdirectory/',
  routes: [
    // ...
  ]
})

2.配置 Web 服务器

接下来,需要注意的就是我们部署的 Web 服务器如何配置支持 history 模式和二级目录。

对于 Apache 服务器,可以在 .htaccess 文件中添加下面这段代码:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /subdirectory/
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /subdirectory/index.html [L]
</IfModule>

对于 Nginx 服务器,需要在 server 配置块中添加以下代码:

location /subdirectory/ {
  try_files $uri $uri/ /subdirectory/index.html;
}

3.修改 publicPath

最后,在构建生产环境时,需要在 vue.config.js 文件中修改 publicPath 来指定构建生成的静态资源根目录。

module.exports = {
  publicPath: '/subdirectory/'
  // ...
}

示例说明

示例1:设置为根目录

如果您要部署到根目录,只需将 base 设置为空字符串即可:

const router = new VueRouter({
  mode: 'history',
  base: '',
  routes: [
    // ...
  ]
})

示例2:设置子目录

在这个例子中,我们将 base 设置为 /my-app/,并且将 Vue.js 应用程序部署到 http://www.example.com/my-app/

首先,在 Vue.js 应用程序的跟目录执行:

$ vue create my-app
$ cd my-app

然后,为我们的 Vue.js 应用程序创建一个子目录:

$ mkdir -p public/my-app/
$ mv dist/* public/my-app/

最后,在 public/my-app/ 目录中创建一个 .htaccess 文件:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /my-app/
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /my-app/index.html [L]
</IfModule>

这样,我们就可以成功部署一个 Vue.js 应用程序到 http://www.example.com/my-app/ 了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue history 模式打包部署在域名的二级目录的配置指南 - Python技术站

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

相关文章

  • ubuntu16.04搭建nfs服务的方法

    当我们需要在多个计算机之间共享文件时,nfs是一种非常有用的方式。NFS是Network File System的缩写,这是一个支持基于Unix的文件系统之间的文件共享协议。在Ubuntu中,我们可以使用NFS来共享文件,并使其他计算机能够访问我们的共享。下面是一份详细的教程,来演示如何在Ubuntu 16.04上安装和配置NFS服务。 安装NFS服务 首先…

    other 2023年6月27日
    00
  • Go结构体的基本使用详解

    标题:Go结构体的基本使用详解 什么是Go结构体 在Go语言中,结构体是一种用户自定义的数据类型,它可以包含多个字段,并且可以是不同类型的。它类似于其他编程语言中的结构体或对象。 结构体可以用于将多个数据项组合在一起以形成更复杂的数据结构。 结构体的定义如下: type StructName struct { Field1 Type1 Field2 Type…

    other 2023年6月27日
    00
  • vncserver配置、启动、重启与连接方法

    接下来我将为您讲解详细的vncserver配置、启动、重启与连接方法的完整攻略。 VNC Server简介 VNC(Virtual Network Computing)是一种远程桌面控制协议。VNC Server就是指在服务器上运行的用于接受来自客户端VNC Viewer的远程连接的程序。 VNC Server的安装 在CentOS 7 中可以通过 yum …

    其他 2023年4月16日
    00
  • java 基础之JavaBean属性命名规范问题

    Java基础之JavaBean属性命名规范问题攻略 1. 什么是JavaBean JavaBean是一种Java语言编写的可重用组件,符合特定的命名规范和规则。JavaBean主要用于封装数据,具备一定的属性和方法,以便在不同的应用中进行传递和操作。 2. JavaBean属性命名规范 在JavaBean中,属性命名需要遵循一定的规范,以保证代码的可读性和一…

    other 2023年6月28日
    00
  • 访问IIS元数据库失败的解决方法

    访问IIS元数据库失败的解决方法 当我们在使用IIS(Internet Information Services)时,可能会遇到无法连接或访问IIS元数据库的问题。在这篇文章中,我们将讨论具体的解决方法。 问题分析 在使用IIS时,如果我们无法连接或访问IIS元数据库,有可能会出现以下问题: 无法在IIS中创建新网站或应用程序池 无法启动或停止IIS服务 无…

    其他 2023年3月28日
    00
  • 靠谱助手解决常见安卓模拟器的四大无法安装问题

    下面是“靠谱助手解决常见安卓模拟器的四大无法安装问题”的完整攻略: 一、问题描述 在使用安卓模拟器过程中,有时会遇到无法安装软件的问题。主要表现为点击安装软件后,无反应或弹出提示框但无法正常安装软件。这个问题会给用户带来很大的不便,特别是对于安卓开发人员来说更是一个重要问题。 二、常见原因 下面列举常见的四个原因:1. 当前模拟器内存不足,或存储空间不足;2…

    other 2023年6月26日
    00
  • vue怎么获取document

    Vue怎么获取document 在Vue项目中,我们要在JS中操作DOM元素可能需要获取document对象。那么,Vue应该如何获取document呢? 在Vue中获取document Vue.js是一个前端框架,是基于HTML和JavaScript的,所以我们可以使用JavaScript来获取document对象。在.vue文件的标签中,我们可以使用原生…

    其他 2023年3月29日
    00
  • PHP 得到根目录的 __FILE__ 常量

    获取根目录的__FILE__常量是在PHP中获取项目根目录路径的常见方法。下面是获取根目录的__FILE__常量的完整攻略: 1.理解__FILE__常量 __FILE__是在运行脚本时自动定义的常量,代表当前文件的绝对路径以及文件名。在PHP中,__FILE__常量包含了当前文件的完整路径,因此可以通过__FILE__常量解析项目根目录的路径。 2.获取根…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部