Vue项目部署服务器后报404解决方案

文章类型:Vue

发布者:hp

发布时间:2023-03-17

一:部署

主要进行nginx代理,指定到某某文件夹下的html

server {
listen 80;
server_name www.xxx.com;

location / {
index /data/dist/index.html;
}
}

二:404问题(history会出现而 hash没有)

1:history

根据 nginx 配置输入 www.xxx.com 时,这时会打开我们 dist 目录下的 index.html 文件,然后我们在跳转路由进入到 www.xxx.com/login,执行刷新操作,nginx location 是没有相关配置的,所以就会出现 404 的情况

2:hash

router hash 模式我们都知道是用符号#表示的,如 website.com/#/login, hash 的值为 #/login 虽然出现在 URL 中,但不会被包括在 HTTP 请求中,因此改变 hash 不会重新加载页面,仅 hash 符号之前的内容会被包含在请求中,因此对于服务端来说,即使没有配置location,也不会返回404错误

三:解决方案

本质是因为我们的路由是通过JS来执行视图切换的,当进入子路由时刷新页面,没有找到页面会出现404

只需要配置将任意页面都重定向到 index.html,把路由交由前端处理,添加try_files $uri $uri/ /index.html;

server {
listen 80;
server_name www.xxx.com;

location / {
index /data/dist/index.html;
try_files $uri $uri/ /index.html;
}
}