需求:将www的域名地址重定向跳转到非www的顶级域名中,排除admin目录下的文件,也就是说admin的目录文件运行www路径访问而不重定向。
平时我们在做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