rewite
在server块下,会优先执行rewrite部门,然后才会去匹配location块
server中的rewrite break和last没什么区别,城市去匹配location,,所以没须要用last再提倡新的请求,可以留空
location中的rewirte:
不写last和break - 那么流程就是依次执行这些rewrite
1. rewrite break - url重写后,直接利用当前资源,不再执行location里余下的语句,完本钱次请求,地点栏url稳定
2. rewrite last - url重写后,顿时提倡一个新的请求,再次进入server块,重试location匹配,高出10次匹配不到报500错误,地点栏url稳定
3. rewrite redirect – 返回302姑且重定向,地点栏显示重定向后的url,爬虫不会更新url(因为是姑且)
4. rewrite permanent – 返回301永久重定向, 地点栏显示重定向后的url,爬虫更新url
利用last会对server标签从头提倡请求
假如location中rewrite后是对静态资源的请求,不需要再举办其他匹配,一般要利用break或不写,直接利用当前location中的数据源,完本钱次请求
假如location中rewrite后,还需要举办其他处理惩罚,如动态fastcgi请求(.php,.jsp)等,要用last继承提倡新的请求
(根的location利用last较量好, 因为假如有.php等fastcgi请求还要继承处理惩罚)
利用alias指定源:必需利用last
if语句主要用来判定一些在rewrite语句中无法直接匹配的条件,好比检测文件存在与否,http header,cookie等
location匹配法则及优先级
= 严格匹配这个查询。假如找到,遏制搜索。
^~ 匹配路径的前缀,假如找到,遏制搜索。
~ 为区分巨细写的正则匹配
~* 为不区分巨细写匹配
优先级: =, ^~, ~/~*, 无
break语句
放在server块rewrite语句前面
假如是直接请求某个真实存在的文件,则用break语句遏制rewrite查抄
if (-f $request_filename) {
break;
}