Nginx版本:1.19
系统:CentOS7.6
Vue:2.2+
问题描述:在Nginx中部署项目的时候,直接输入域名根目录地址。访问正常的,但是带上参数路径后,一直提示404。刚开始以为是npm打包的问题,在打包两次后发现还是一样的问题。
那么问题应该是出现在配置文件中了。在Nginx的配置文件中,使用的是
location / {
root /home/www/web/h5/dist/;
index index.html index.htm;
}
这样在访问根目录的时候是没问题的,在页面中点击跳转也是OK的。
百度了下,需要再location中增加try_files 方法。
例如格式:
try_files $uri $uri/ /index.html;
举例:http://host/home 。
$uri 就是 /home
首先,try_files 会到磁盘里尝试找这个文件。如果存在名为 /$Root/home(其中 $Root 是项目代码安装目录)的文件,就直接把这个文件的内容发送给用户。
然后找不到的话,就看 $uri/,增加了一个 /,也就是看有没有名为 /$root/home/ 的目录。
最后如果还找不到,就会到 try_files 的最后一个选项 /index.html,发起一个内部 “子请求”,也就是相当于 nginx 发起一个 HTTP 请求到 http://host/index.html。