rewrite格式
格式:rewrite regex replacement [flag]
rewrite配置可以在server、location以及if配置段内生效
regex是用于匹配URI的正则表达式,其不会匹配到$host(域名)
replacement是目标跳转的URI,可以以http://或者https://开头,也可以省略掉$host,直接写$request_uri部分(即请求的链接)
flag,用来设置rewrite对URI的处理行为,其中有break、last、rediect、permanent
rediect和permanent的区别在于,前者为临时重定向(302),而后者是永久重定向(301),对于用户通过浏览器访问,这两者的效果是一致的。但是,对于搜索引擎蜘蛛爬虫来说就有区别了,使用301更有利于SEO。所以,建议replacemnet是以http://或者https://开头的flag使用permanent。
break和last如果直接在server中使用的话,并没有明显的区别,都是匹配到规则的话,直接进行访问,如果在location中的话,break不会跳出当前location,继续按照匹配的规则继续执行;如果是last的话,会跳出当前location,匹配其他的location
break和last的说明
现在有如下rewrite规则
直接访问的话,会按照这个顺序,进行跳转1.html => 2.html ; 2.html => 3.html ; 3.html => b.html
如果在第一个location中的第一行,接口加上break
访问的时候,匹配到break就直接停止继续访问了, 1.html => 2.html
如果把break改为last的话
当访问匹配到到last时,当前location下面的规则不在匹配,继续匹配其他符合条件的location规则,所以应该是 1.html => 2.html ; 2.html => a.html的访问结果