首页 > 技术分享 > LNMP|WAMP
收藏

nginx中配置rewrite last和break指令

03/13 16:00
大潇博客 原创文章,转载请标明出处

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或break需要rewrite的url加入了http,nginx不明白这时的主域名为本站或其它,所以地址栏url会被强制改变,显示重定向后的url

所以不想地址栏改变,只能使用当前域名为默认主域名,即跳转的url从“/”开始


上文所说的,可以通过下面demo理解:

1、rewrite带http:的url,地址栏url会改变,重定向后的url

location ~* /a/lists/ {

rewrite ^/a/lists/(.*)/(.*)$ http:www/daxiao.show/index.php?m=content&c=index&a=lists_second&catids=$1&name=$2 last;

}


2、rewrite的url以“/”开头,表示继续rewrite到当前域名下,地址栏url不变

location ~* /a/lists/ {

rewrite ^/a/lists/(.*)/(.*)$ /index.php?m=content&c=index&a=lists_second&catids=$1&name=$2 last;

}


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311