专栏首页codingnginx 如何实现if嵌套

nginx 如何实现if嵌套

nginx 不支持 if 嵌套,也不允许在 if 中使用逻辑判断,会报如下错误:

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

当业务需要多个条件判断时,可以借助中间变量来实现

如:我们的网站在 pc 端有多个子域名, 而移动端只有一个域名,对应关系如下:

  • www.test.com --> m.test.com
  • sub1.test.com --> m.test.com/sub1
  • sub2.test.com --> m.test.com/sub2
  • 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 2;
}
if ($host ~* "sub2.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 = 12) {
    rewrite ^(.*) http://m.test.com/sub1$1 permanent;
}
if ($sign = 13) {
    rewrite ^(.*) http://m.test.com/sub2$1 permanent;
}
if ($sign = 14) {
    rewrite ^(.*) http://m.test.com/sub3$1 permanent;
}

原文 https://www.itshutong.com/363.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python面向对象应用案例:烧鸡翅

    章鱼喵
  • python的多进程与多fork

    章鱼喵
  • python3无法print中文的解决方案

    python 的编码问题很让人窝火,本来以为 python3 不会再遇到各种奇怪的编码问题,没想到又跳到一个大坑里。在 shell 环境中,用 python3 ...

    章鱼喵
  • 【DUBBO】 扩展机制ServiceLoaderExtensionLoader

    可扩展机制也就是SPI(Service Provider Interface)了,SPI是一种服务提供发现机制。一个服务通常指的是已知的接口,服务提供方就是这个...

    spilledyear
  • 微信公众号对话框回复消息链接跳转小程序

    在项目过程之中,可能会遇到这样的需求,点击微信公众平台开发的界面里的某个图标或者文字,跳转到小程序,这样更加有利于用户去访问小程序,如果是把小程序的卡片直接插入...

    祈澈菇凉
  • Vim|多行行尾插入【转】

    转自:https://segmentfault.com/a/1190000005094414

    用户3033338
  • java微信公众号JSAPI支付以及所遇到的坑

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=RED...

    陈灬大灬海
  • OkHttp3的用法Demo

    麦克劳林
  • 关于 MyBatis 我总结了 10 种通用的写法

    foreach元素的属性主要有item,index,collection,open,separator,close。

    逆锋起笔
  • python except Lookup

      File "D:\Program Files\ActiveState Komodo IDE 5\lib\support\dbgp\bin\pydbgp.py...

    py3study

扫码关注云+社区

领取腾讯云代金券