Nginx下常見的301跳轉有以下三種,雖然都能達到同樣的目的。但是三種寫法上還是有區別的,主要的區別是在正則匹配的性能上。
第一種:使用rewrite指令,通過正則匹配所有的URI后再去掉開頭第一個/(反斜線)。
1
|
rewrite ^/(.*)$ https:
//www
.hi-linux.com/$1;
|
第二種:同樣使用rewrite指令,不同的是通過$request_uri變量匹配所有的URI。
1
|
rewrite ^ https:
//www
.hi-linux.com$request_uri? permanent;
|
這樣寫的好處是省去了去掉開頭第一個反斜線的過程,正則匹配上性能更優。
第三種:使用return指令,通過301狀態碼和$request_uri參數,直接告訴Nginx這是個301重定向和抓取指定URI。
1
|
return
301 https:
//www
.hi-linux.com$request_uri;
|
這種方法是性能上最優的,因為rewrite指令有很多寫法和規則,執行完所有正則匹配后,Nginx 才會知道這是一個301永久重定向。
通過以上三種寫法介紹,我們可以看出return指令在301跳轉上比rewrite指令性能上更加有優勢。雖然在訪問量不大的情況下幾種寫法的性能表現上區別並不大,不過在海量訪問中一個小小的優化也能在提升業務系統性能上起到不小的作用喲。