Nginx 301重定向跳转需要排除指定目录文件的方法

原创 小菜  2020-02-20 00:41:03  阅读 2830 次 评论 0 条

需求:将www的域名地址重定向跳转到非www的顶级域名中,排除admin目录下的文件,也就是说admin的目录文件运行www路径访问而不重定向。

301重定向

平时我们在做301跳转时是这样的,但是会将所有的www进行重定向到www。

###### 域名重定向 ######
if ($host = 'www.dii123.com') {
rewrite  ^/(.*)$  https://dii123.com/$1 permanent;
}

那么,如何排除admin这个目录呢,看如下代码。先匹配host的值,避免正确的值被重写。

###### 域名重定向,admin ######
set $flag 'admin';

if ($host = 'www.dii123.com') {
   set $flag '3w';
}
if ($http_uri ~* /admin){
   set $flag 'admin';
}
if ($uri ~* /admin){
   set $flag 'admin';
}
if ($flag = '3w') {
    rewrite  ^/(.*)$  https://dii123.com/$1 permanent;
}
###### 域名重定向,排除admin目录 end ######

上面的逻辑代码使用if判断的,其实我更希望使用location来进行一个匹配,匹配到admin目录之后就不进行重定向,不配不上在判断是否www的路径。这样可能一个location就能省略这4个if判断,代码看起来更清爽。

本文地址:https://www.dii123.com/post/827.html
版权声明:本文为原创文章,版权归 小菜 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?