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

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日

相关文章

  • AMD新处理器R5-3600XT/R7-3800XT/R9-3900XT区别对比评测

    AMD新处理器R5-3600XT/R7-3800XT/R9-3900XT区别对比评测攻略 简介 AMD最新推出的Ryzen 3000 XT系列处理器包括R5-3600XT、R7-3800XT和R9-3900XT。这些处理器是基于Zen 2架构的改进版本,旨在提供更高的性能和更好的游戏体验。本文将详细讲解这三款处理器的区别,并进行对比评测。 1. R5-360…

    other 2023年8月6日
    00
  • 最终幻想14百度帐号5003错误解决方法介绍

    最终幻想14百度帐号5003错误解决方法介绍 最终幻想14玩家在使用百度帐号登录游戏中可能会遇到5003错误,这通常是由于网络连接问题或者账户异常造成的,下面我们将介绍如何解决此问题。 方法1:重启网络设备和电脑 此问题通常由于网络连接问题引起,您可以试着重启您的网络设备和电脑。 示例: 拔掉您的路由器和电脑的电源线。 等待10秒钟,重新插上电源线,然后等待…

    other 2023年6月27日
    00
  • Bootstrap(2) 排版样式

    Bootstrap(2) 排版样式 Bootstrap是一组用于构建Web应用程序的工具和模板。通过使用Bootstrap,您可以轻松地创建现代和响应式的Web应用程序和网站。Bootstrap的排版样式是用于控制网页所有区块的宽度、高度和对齐方式。在这篇文章中,我们将详细讨论Bootstrap的排版样式。 栅格系统 Bootstrap的栅格系统是一种用于控…

    其他 2023年3月28日
    00
  • 怎么查看隐藏文件

    查看隐藏文件需要在操作系统中设置,下面是Windows和macOS两种操作系统的查看隐藏文件的具体方法: Windows 在Windows系统中,可以通过下面的步骤来查看隐藏文件: 打开”文件夹选项”对话框。按下Win + E打开文件资源管理器,然后在菜单栏中点击”查看”,在下拉菜单中选择”选项”。 在”文件夹选项”对话框中选择”查看”标签页,向下滚动找到”…

    其他 2023年4月16日
    00
  • mysql命名规范

    以下是关于“MySQL命名规范”的完整攻略: MySQL命名规范 在MySQL中,命名规范是非常重要的,它可以提高可读性和可护性。以下是MySQL命名规范的一些基本原则: 使用有意义的名称:表名、名、索引名等应该使用有意义的名称,能够清晰地表达其含义。 使用小写字母:MySQL不区分大小写,但是为了提高可读性,建议使用小写字母。 使用下划线分单词:在表、列名…

    other 2023年5月9日
    00
  • i3-8100F是什么 i3-8100F和8100有什么区别

    i3-8100F是什么? i3-8100F是英特尔(Intel)推出的一款第8代酷睿(Core)i3系列处理器。它是i3-8100处理器的一个变种,专为预算有限的用户设计。i3-8100F采用了相同的架构和技术规格,但在一些方面有所不同。 i3-8100F和8100有什么区别? 虽然i3-8100F和i3-8100在大部分方面非常相似,但它们之间存在一些区别…

    other 2023年8月6日
    00
  • 什么是validationquery

    当然,我很乐意为您提供有关validationQuery的完整攻略。以下是详细的步骤和两个示例: 1. 什么是validationQuery? validationQuery是一个JDBC连接池的配置选项,用于测试连接是否有效。当连接池从数据库获取连接时,它会执行validationQuery语句,如果语句执行成功,则连接有效,否则连接无效。 2. vali…

    other 2023年5月6日
    00
  • PHP中的Trait 特性及作用

    PHP中的Trait 特性及作用 什么是Trait Trait是PHP中一种代码复用机制,它允许开发者在不使用继承的情况下,将方法集合应用到一个类中。Trait可以被多个类使用,提供了一种解决多继承问题的方式。 Trait的作用 Trait的主要作用是解决PHP单继承的限制,它可以在不引入多继承的复杂性的情况下,实现代码的复用。Trait可以定义一组方法,然…

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