环境
vue-cli 5.x
vue-router 4.x
Nginx
综述
使用Vue3项目Vue-router4开发完毕后项目Build打包部署线上环境后,首页能正常访问菜单内点击切换也没有问题,但当你刷新页面后,则出现 404 Not Found,故在此记录一下解决办法
解决思路
在与chatGPT进行深刻激烈的探讨后,确定了是Nginx的问题,根据chatGPT的引导进行配置依旧无法解决,刷新页面时访问的资源在服务端找不到,因为此时vue-router设置路由地址被当作url地址,此时的地址路径肯定不是真实存在的,所以出现404现象。
之所以出现上面的现象,是因为在nginx配置的根目录/www/wwwroot/dist下面压根没有’XXX/xxx/xxx’这个真实资源存在,这些访问资源都是在js里渲染的。
1 2 3 4 5 6 7 8
| server { listen 80; server_name www.vvhan.com; index index.html; root /www/wwwroot/dist; }
|
如上出现404的原因是由于在这个域名根目录/www/wwwroot/dist下面压根就没有’XXX/xxx/xxx’这个真实目录存在。
解决问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| server { listen 80; server_name www.vvhan.com; index index.html; root /www/wwwroot/dist;
location / { try_files $uri $uri/ @router; index index.html; } location @router { rewrite ^.*$ /index.html last; } }
|