try_files 是试图按指定文件的顺序依次尝试是否能获取响应内容,如果能获取响应内容,则向客户端返回响应内容。否则继续尝试从下一个指定文件获取响应内容。
rewrite 是按指定规则把文件的访问重定向到新的地址,是用新的地址重新发起一次访问,相对于会发送2次访问,即使是重定向到当前虚拟主机内部,也会从头发起访问。
可以明显的发现的是,try_files不会从头发起访问,rewrite会重新发起访问。
rewrite会导致浏览器地址栏地址发送改变(往浏览器发送301响应),因为是重定向了访问地址;try_files不会导致浏览器地址栏发送改变,因为没有发送重定向,只是在服务器端依次尝试获取一个响应,完全只是服务器内部一个查找文件的过程。
下面的规则,尝试访问一个uri地址,如果文件不存在,则把uri地址当做目录访问,尝试访问目录下的索引文件,如果索引文件也不存在,这访问根目录下的index.html文件
location / {
try_files $uri $uri/ /index.html;
}
如果访问的是/a/b,且不存在/a/b的文件或目录,则客户端浏览器地址不会发生改变,实际响应内容从index.html文件获取。这个方式适合用于VUE的单页面路由地址优化。
标签:files,文件,rewrite,访问,try,Nginx,地址 From: https://www.cnblogs.com/lbnnbs/p/16755562.html