文章標簽 ‘rewrite-flag’

關于nginx rewrtie的四種flag

2012年1月9日 沒有評論

利用nginx的rewrite的指令,可以實現url的轉向,對于rewrtie有四種不同的flag,分別是redirect、permanent、break和last。其中前兩種是跳轉型的flag,后兩種是代理型。跳轉型是指有客戶端瀏覽器重新對新地址進行請求,代理型是在WEB服務器內部實現跳轉的。

  • 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;
	}
分類: Linux, nginx 標簽: , ,

無覓相關文章插件,快速提升流量

30选5怎么中奖