Nginx rewrite 的 last 以及 break 的區別

 

last:rewrite匹配後,會再次發起一個請求,只會對location裏的規則再次匹配。php

break:rewrite匹配後,不會發起請求,也不會匹配後面的規則。html

 

舉例:dom

location / {url

root html;spa

index index.php index.html index.htm;htm

}blog

if ($request_uri ~* /cms/) {get

rewrite "^/cms/(.*)\.php" /cms/index.php break;it

# 這裏使用last也能夠,單獨的if只處理一次io

# "if"和"("須要空格

}

 

 

location / {

root html;

index index.php index.html index.htm;

if ($request_uri ~* /cms/) {

rewrite "^/cms/(.*)\.php" /cms/index.php break;

# 這裏使用last會形成死循環,在location裏的if會處理屢次

}

 

須要注意url有問號的狀況

比較不加"?"和加上"?"標記的URL跳轉區別

rewrite ^/test(.*)$ http://www.yourdomain.com/home permanent;

訪問http://www.yourdomain.com/test?id=5通過301跳轉後的URL是

http://www.yourdomain.com/home?id=5

  

rewrite ^/test(.*)$ http://yourdomain.com/home? permanent;

訪問http://www.yourdomain.com/test?id=5通過301跳轉後的URL是

http://www.yourdomain.com/home

 

轉載於: http://liuping0906.blog.51cto.com/2516248/1301125

相關文章
相關標籤/搜索