關於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