当Vue Router使用了history模式时,Vue Router会改变URL而不会重新加载页面,但是当我们直接访问子路由或者刷新子路由时,浏览器会向服务器请求这个路径的资源,而服务器(这里就是Nginx)并没有这个路径对应的静态文件,所以会返回404。下面介绍两种简单的解决办法。
解决办法1
修改Nginx配置文件:
ini
123
location / {
try_files $uri $uri/ /index.html;
}
将所有无法匹配到静态文件的请求重定向到index.html,然后由Vue Router在前端处理路由。
解决方法2
修改前端项目Vue Router配置:
vue
1234567
import { createRouter, createWebHashHistory } from 'vue-router'
const router = createRouter({
# history: createWebHistory(),
// 使用Hash模式
history: createWebHashHistory(),
})
缺点是URL会出现#,例如xxx.xxx/#/xxx。