利用nginx的rewrite命令,能夠實現URL的重寫,可在nginx配置文件的server、location、if部分使用,對於rewrite有四種不一樣的flag。nginx
redirect:返回302臨時重定向,瀏覽器地址欄會顯示跳轉後的URL地址,爬蟲不會更新URL
permanent:返回301永久重定向,瀏覽器地址欄會顯示跳轉後的URL地址,爬蟲會更新URL
break:中止處理後續rewrite指令集,不會跳出location做用域,再也不進行從新查找,終止匹配,URL地址不變
last:中止處理後續rewrite指令集,跳出location做用域,並開始搜索與更改後的URI相匹配的location,URL地址不變瀏覽器
其中redirect和permanent很好理解,直接對URL地址進行重定向,顯示跳轉後的URL地址,從實現功能的角度看,redirect和permanent是同樣的,不存在好壞和性能上的問題,主要會對seo全部影響。性能
舉例說明break和last,下面是一個配置示例:spa
location /abc/ {server
rewrite ^/abc/(.*) /whsir/$1 break;
return 401;
}
location /opq/ {
rewrite ^/opq/(.*) /whsir/$1 last;
return 402;
}
location /whsir/ {
return 403;
}
訪問http://DEMO/abc/*時,返回404,若是whsir目錄下存在對應文件則返回200seo
訪問http://DEMO/opq/*時,匹配到了/whsir/,而後跳出location做用域,匹配到了location /whsir/,而後返回403ip
break和last同樣都會中止處理後續rewrite模塊指令的運行,可是last會從新發起一個請求,不管請求成功或者失敗,並從新匹配location。作用域