vue的单页应用部署后,当我们进入到某个路由之后,按F5刷新页面会出现404错误:
IIS下部署后的解决方案一般是使用 URLRewrite
首先要安装URLRewrite 下载地址
准备一个简单的vue项目只包含路由功能 (安装了vue-router cnpm i -S vue-router
)
main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router/routes'
Vue.config.productionTip = false
new Vue({
router,
render: h => h(App),
}).$mount('#app')
HelloWorld.vue是创建时vue自带的组件
另外的About.vue和Home.vue是建的很简单的组件,只在template中加入了点内容
About.vue
<template>
<div>
<h2>我是关于我们页</h2>
</div>
</template>
<script>
export default {
}
</script>
Home.vue
<template>
<div>
<h2>我是主页</h2>
</div>
</template>
<script>
export default {
}
</script>
router/routes.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import HelloWorld from '../components/HelloWorld'
import Home from '../components/Home'
import About from '../components/About'
Vue.use(VueRouter)
const routes=[
{path:'/',component:Home},
{path:'/about',component:About},
{path:'/hello',component:HelloWorld}
]
const router = new VueRouter({
mode: 'history',
routes
})
export default router
App.vue也是作了点修改加了 <router-view />
<template>
<div id="app">
<img alt="Vue logo" src="./assets/logo.png">
<p>
<!-- 使用 router-link 组件来导航. -->
<!-- 通过传入 `to` 属性指定链接. -->
<!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
<router-link to="/">主页</router-link>
<router-link to="/about">关于我们页</router-link>
<router-link to="/hello">Hello Vue</router-link>
</p>
<router-view />
</div>
</template>
<script>
export default {
name: 'app'
}
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
项目搭建好后,构建: npm run build
,接着发布到IIS
现在已经可以打开浏览站点了,但是例如浏览到
http://localhost:8088/about
F5刷新页面会出404错误image.png
最开始的时候安装了URLRewrite,
现在在IIS上添加重写规则
这一步后,选择右上角的添加规则
image.png
image.png
image.png
image.png
填写完毕后,点击右侧的应用即可
现在在
http://localhost:8088/about
路由下F5刷新就不会404了
网友评论