Nginx 小技巧——几种常见实现 301 重定向方法上的区别

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指令性状上更加有优势。虽然在拜访量不大的情形下几种写法的性状表现上区分其实不大,不过在海量拜访中一个小小的优化也能在晋升业务体系性状上起到不小的作用哟!