vue打包后 history模式 tomcat部署 子目录静态文件路径 分析

5 篇文章 0 订阅

history

根目录

路由mode变为history后,需要在服务器配置 url重写,在根目录 创建web.config文件 加下面内容复制进去

<?xml version="1.0" encoding="utf-8"?>
<configuration>  
<system.webServer>
    <rewrite>
      <rules>
        <rule name="Handle History Mode and custom 404/500" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
background: url('/static/logo.png') no-repeat center/ 50%;    跟路径 / 和 相对路径
<img src="/static/logo.png" alt="" srcset="">    跟路径 /  和 相对路径
<div class="image1" style="background:url('../static/logo.png')"></div>    跟路径 / 和 ../
<img :src="image" alt="" srcset="">      跟路径 / 和../
data () {
  return {
    image: '../static/logo.png'
  }
}
子目录

例如我在根目录下创建子目录名为app的文件夹作为项目文件夹
路由mode变为history后,需要在服务器配置 url重写,在根目录 创建web.config文件 加下面内容复制进去  与根目录不同的是  action 标签 url  /app/index.html

<?xml version="1.0" encoding="utf-8"?>
<configuration>  
<system.webServer>
    <rewrite>
      <rules>
        <rule name="Handle History Mode and custom 404/500" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/app/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

config index.js文件下  build对象中publicPatch 从默认的 / 改成 自己部署的 子目录名称 /app/

build: {
  // Paths
  assetsRoot: path.resolve(__dirname, '../dist'),
  assetsSubDirectory: 'static',
  assetsPublicPath: '/app/',
}

router.js 需要改下 base 根据不同的打包环境   dev 默认就是 / pro需要根据项目路径

var base = process.env.NODE_ENV === 'development' ? '/' : '/app/'

export default new Router({
  mode: 'history',
  base: base,
  routes: []
})
background: url('../../static/logo.png') no-repeat center/ 50%;    相对路径
<img src="../../static/logo.png" alt="" srcset="">    相对路径
<div class="image1" style="background:url('../static/logo.png')"></div>    ../
<img :src="image" alt="" srcset="">    ../
data () {
  return {
    image: '../static/logo.png'
  }
}

总结: 
history模式,本地运行 肯定是在根目录 127.0.0.1:xxxx/# 使用上面根目录方法
打包发到生产环境,视情况使用

根目录和子目录 有些相同的引入方法

建议 直接使用相同的方法  同时适应根目录和子目录 部署


background: url('../../static/logo.png') no-repeat center/ 50%;    相对路径
<img src="../../static/logo.png" alt="" srcset="">    相对路径
<div class="image1" style="background:url('../static/logo.png')"></div>    ../
<img :src="image" alt="" srcset="">    ../
data () {
  return {
    image: '../static/logo.png'
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值