关于nginx rewrtie的四种flag

关于nginx rewrtie的四种flaghtml

利用nginx的rewrite的指令,能够实现url的转向,对于rewrtie有四种不一样的flag,分别是redirect、permanent、break和last。其中前两种是跳转型的flag,后两种是代理型。跳转型是指有客户端浏览器从新对新地址进行请求,代理型是在WEB服务器内部实现跳转的。nginx

redirect:302跳转到rewrtie后面的地址。 permanent:301永久调整到rewrtie后面的地址,即当前地址已经永久迁移到新地址,通常是为了对搜索引擎友好。 last:将rewrite后的地址从新在server标签执行。 break:将rewrite后地址从新在当前的location标签执行。 使用root或proxy_pass指定源,last,break均可以,可是结果可能会有差异,后面用例子说明;使用alias指定源,必须使用last。假若有以下配置:浏览器

location / {
    root   /var/www/html;
    index  index.html index.htm;
    rewrite "/x/t.html" /y/t.html break;
}

location /y/ {
    root  /var/www/html/other;
}

当请求/x/t.html,符合rewrite规则,因此进行调整,调整的地址为/y/t.html,因为使用的flag是break,因此在“location /”中进行跳转,结果是/var/www/html/y/t.html。但若是flag为last,那么/y/t.html将在server标签中从新执行,因为存在一个“location /y/”,因此跳转被从新指定到“location /y/”标签,因此这个时候的结果为/var/www/html/other/y/t.html。服务器

注意:使用last,若是配置不当,可能引发死循环。例如:搜索引擎

location /x/ {
    proxy_pass http://my_proxy;
    rewrite "^/x/(.*)\.html$" /x/1.html last;
}

欢迎转载,转载请注明文章出处,谢谢!url

相关文章
相关标签/搜索