ここでは、IF 関数の構文、説明、パラメーター、戻り値、例について記述します。

and

この関数は、次のように記述されます。
  • 構文: and(arg, ...)
  • 説明
    • この関数を呼び出して、論理 AND 演算を実行します。
    • 短絡セマンティクスに対応しています。 値が false と評価されると、後続の値は評価されません。
  • パラメーター

    arg: true であるかを確認する値。 Data type: 任意の型。 1 つ以上の値を指定できます。

  • 戻り値

    この関数は、すべての値が true と評価された場合、trueを返し、いずれかの値が false と評価された場合、falseを返します。

  • if and($arg_mode, eq($arg_mode, 'set_header')) {
        add_rsp_header('USER-DEFINED-1','path1')
    }
    
    Notes
    a. If the request includes the mode parameter and the value of the mode parameter is set_header, set the USER-DEFINED-1 response header.
    b. If the request does not include the mode parameter, the short-circuit semantics takes effect and the subsequent eq comparison is not executed. The response header USER-DEFINED-1 will not be set because the and () function returns false.

or

この関数は、次のように記述されます。
  • 構文 : or(arg, ...)
  • 説明
    • この関数を呼び出して、論理 OR 演算を実行します。
    • 短絡セマンティクスに対応しています。 値が true と評価されると、後続の値は評価されません。
  • パラメーター

    arg: true であるかを確認する値。 Data type: 任意の型。 1 つ以上の値を指定できます。

  • 戻り値

    この関数は、すべての値が true と評価された場合、trueを返し、すべての値が false と評価された場合、falseを返します。

  • if and($http_from, or(eq($http_from, 'wap'), eq($http_from, 'comos'))) {
        rewrite(concat('http://tech.com.cn/zt_d/we2015/', $http_from), 'enhance_redirect')
    }
    
    Notes
    a. If the request includes the from header and its value is wap or comos, the URL is 302 rewritten as http://tech.com.cn/zt_d/we2015/[wap|comos].
    b. If the request includes the from header and its value is wap, the short-circuit semantics takes effect and the subsequent eq comos comparison is not executed. At the same time, the or () function returns true.

not

この関数は、次のように記述されます。
  • 構文:not(arg)
  • 説明

    この関数を呼び出して、論理 NOT 演算を実行します。 undef および false の値は false として評価され、その他の値は true と評価されます。

  • パラメーター

    arg: 反対の値に変換する値。 Data type: 任意の型。 指定できる値は 1 つのみです。

  • 戻り値
    • true
    • false
  • if not($arg_key) {
        exit(403)
    }
    Note: If a request does not include the key parameter, the request is denied and status code 403 is returned.
    
    if not($cookie_user) {
        exit(403, 'not cookie user')
    }
    Note: If a request does not include cookie_user, the request is denied, a response that contains "not cookie user" is returned with status code 403.
    
    if not(0) {
        exit(403)
    }
    Note: The not (0) function returns false.
    
    if not(false) {
        exit(403)
    }
    Note: The not (false) function returns true.

eq

この関数は、次のように記述されます。
  • 構文: eq(arg1, arg2)
  • 説明

    この関数を呼び出して、2 つの値が等しい値であるか比較します。

  • パラメーター
    • arg1: 比較する最初の値。 Data type: 任意の型。
    • arg2: 比較する 2 番目の値。 Data type: arg1パラメーターと同様。
  • 戻り値

    この関数は、2 つの値が等しい場合は trueを返し、等しくない場合は false を返します。

  • key1 = 'value1'
    key2 = 'value2'
    if and($arg_k1, $arg_k2, eq(key1, $arg_k1), ne(key2, $arg_k2)) {
        say('match condition')
    }
    
    Notes
    a. If the request includes both the k1 and k2 parameters, the subsequent comparison operations are executed.
    b. If the request does not include the k1 or k2 parameter, the short-circuit semantics take effect and the subsequent comparison operations are not executed.
    c. eq: whether the value of the k1 parameter is equal to value1.
    d. ne: whether the value of the k2 parameter is not equal to value2.
    e. The response that contains "match condition" is returned only if the following conditions are met: the request includes both the k1 and k2 parameters, the value of the k1 parameter is equal to value1, and the value of the k2 parameter is not equal to value2.

ne

この関数は、次のように記述されます。
  • 構文: ne(arg1, arg2)
  • 説明

    この関数を呼び出して、2 つの値が異なる値であるか比較します。

  • パラメーター
    • arg1: 比較する最初の値。 Data type: 任意の型。
    • arg2: 比較する 2 番目の値。 Data type: arg1パラメーターと同様。
  • 戻り値

    この関数は、2 つの値が等しくない場合は trueを返し、等しい場合は false を返します。

  • key1 = 'value1'
    key2 = 'value2'
    if and($arg_k1, $arg_k2, eq(key1, $arg_k1), ne(key2, $arg_k2)) {
        say('match condition')
    }
    
    Notes
    a. If the request includes both the k1 and k2 parameters, the subsequent comparison operations are executed.
    b. If the request does not include the k1 or k2 parameter, the short-circuit semantics take effect and the subsequent comparison operations are not executed.
    c. eq: whether the value of the k1 parameter is equal to value1.
    d. ne: whether the value of the k2 parameter is not equal to value2.
    e. The response that contains "match condition" is returned only if the following conditions are met: the request includes both the k1 and k2 parameters, the value of the k1 parameter is equal to value1, and the value of the k2 parameter is not equal to value2.