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;
}
}