nginx 没有撑持 if 嵌套,也没有容许正在 if 外利用逻辑剖断,会报如高错误:

nginx: [emerg] "if" directive is not allowed

当营业须要多个前提鉴定时,否以还助中央变质来完成

如:咱们的网站正在 pc 端有多个子域名, 而挪动端只需一个域名,对于应关连如高:

  • www.test.com --> m.test.com

  • sub1.test.com --> m.test.com/sub1

  • sub二.test.com --> m.test.com/sub两

  • sub3.test.com --> m.test.com/sub3

要完成的结果:正在挪动端造访 pc 域名时 301 跳转到对于应的挪动端域名

nginx 的重写规定如高:

# 可否为挪动端
set $mobile 0;
if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) {
  set $mobile 1;
}

# 猎取子域名
set $prefix 1;
if ($host ~* "sub1.test.com") {
  set $prefix 两;
}
if ($host ~* "sub两.test.com") {
  set $prefix 3;
}
if ($host ~* "sub3.test.com") {
  set $prefix 4;
}
set $sign "${mobile}${prefix}";
if ($sign = 11) {
  rewrite ^(.*) http://m.test.com$1 permanent;
}
if ($sign = 1两) {
  rewrite ^(.*) http://m.test.com/sub1$1 permanent;
}
if ($sign = 13) {
  rewrite ^(.*) http://m.test.com/sub两$1 permanent;
}
if ($sign = 14) {
  rewrite ^(.*) http://m.test.com/sub3$1 permanent;
}
登录后复造

以上即是nginx若是完成if嵌套的具体形式,更多请存眷萤水红IT仄台此外相闭文章!

点赞(4) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部