vue-router部署到nginx,访问首页没问题,从首页里跳转其他页面也没问题,但是非首页的其他页面,再次刷新,就会出现404现象。(本地正常)
配置如下图:
![](https://img.kancloud.cn/ba/fa/bafa5c58a20634181ac04786e5a1fd90_790x606.png)
由于nginx下需要配置多个vue工程,所以需要重定向,使得访问路径为 ip:port/project/
但是直接在地址栏访问 ip:port/project/upload 出现404,程序内部跳转则正常,这是因为vue-router设置的路径不是真实存在的路径。如上的404现象,是因为在nginx配置的根目录下面压根没有upload页面这个真实资源存在。(真实页面只有index.html)
解决方法
方法1、网上一般都是说将nginx的配置改为下图这样,可是我试了没用,可能是因为我在nginx下配了多个工程吧,只配一个工程的,可以试试这个
server {
listen 9090;
server_name 10.2.10.130;
root /home/dist/ngixn;
index index.html;
location / {
try_files $uri $uri/ @router;
index index.html;
}
location @router {
rewrite ^.*$ /index.html last;
}
}
方法2、在nginx的server里加上此段配置,有多个vue工程则每个都配一个。若不配的话页面也能打开,只是二级页面刷新会404
server {
listen 9090;
server_name 10.2.10.130;
root /home/dist/ngixn;
index index.html;
location /project {
try_files $uri $uri/ /project/index.html;
}
}
个人理解:$uri表示访问的页面,$uri/表示配置的根路径,如果路径下没有,则跳转到根路径下的/project/index.html
---------------------
来源:CSDN
原文:https://blog.csdn.net/sinat_29740819/article/details/87917263