すべてのプロダクト
Search
ドキュメントセンター

CDN:論理関数

最終更新日:Apr 02, 2026

EdgeScript (ES) は、CDN ルールで条件式を構築するための 6 つの論理関数を提供します。andornoteqne、および null です。3 つのブール演算子 (andornot) はショートサーキット評価をサポートしているため、結果が決定されるとすぐにエンジンは引数の評価を停止します。

関数概要

関数シグネチャ短絡評価戻り値
andand(arg, ...) : Boolean最初の falsetrue(すべての引数が true の場合)
oror(arg, ...) : Boolean最初の truetrue(いずれかの引数が true の場合)
notnot(arg) : Boolean反転したブール値
eqeq(arg1, arg2) : Booleantrue(等しい場合)
nene(arg1, arg2) : Booleantrue(等しくない場合)
nullnull(v) : Booleantrue(v が空文字列、空配列、または空辞書の場合)

and

シグネチャ: and(arg, ...) : Boolean

AND 論理演算子を実行します。いずれかの引数が false と評価されると、ショートサーキット評価が停止し、残りの引数はスキップされます。

パラメーター: 任意の型の 1 つ以上の値。

戻り値: すべての値が true と評価される場合、true。いずれかの値が false と評価される場合、false

: 特定のクエリパラメーターが存在し、指定された値と一致する場合にのみ、レスポンスヘッダーを設定します。

if and($arg_mode, eq($arg_mode, 'set_header')) {
   add_rsp_header('USER-DEFINED-1','path1')
}
  • リクエストに mode=set_header が含まれている場合、and() は両方の条件を評価し、true を返します。USER-DEFINED-1 レスポンスヘッダーが設定されます。

  • リクエストに mode パラメーターがない場合、$arg_modefalse と評価されます。ショートサーキット評価が停止し、eq() は呼び出されず、レスポンスヘッダーは設定されません。

or

シグネチャ: or(arg, ...) : Boolean

OR 論理演算子を実行します。いずれかの引数が true と評価されると、ショートサーキット評価が停止し、残りの引数はスキップされます。

パラメーター: 任意の型の 1 つ以上の値。

戻り値: いずれかの値が true と評価される場合、true。すべての値が false と評価される場合、false

: From ヘッダーの値に基づいてリクエストをリダイレクトします。

if and($http_from, or(eq($http_from, 'wap'), eq($http_from, 'comos'))) {
    rewrite(concat('http://example.com.cn/zt_d/we2015/', $http_from), 'enhance_redirect')
}
  • From」ヘッダーが「wap」または「comos」の場合、リクエストは(HTTP 302)で「http://example.com.cn/zt_d/we2015/[wap|comos]」にリダイレクトされます。

  • From ヘッダーが wap の場合、or() は直ちに true を返します — comos チェックはスキップされます。

not

シグネチャ: not(arg) : Boolean

NOT 論理演算子を実行します。undeffalse の値は false と評価され、その他の値は true と評価されます。

パラメーター: 任意の型の厳密に 1 つの値。

戻り値: true または false

: 必須パラメーターまたは Cookie が不足しているリクエストをブロックします。

if not($arg_key) {
    exit(403)
}
if not($cookie_user) {
    exit(403, 'not cookie user')
}
if not(0) {
    exit(403)
}
if not(false) {
    exit(403)
}
  • not($arg_key) — リクエストに key クエリパラメーターがない場合、$arg_keyundef です。not(undef)true を返し、リクエストは HTTP 403 で終了します。

  • not($cookie_user) — リクエストに cookie_user クッキーがない場合、$cookie_userundef になります。not(undef)true を返し、リクエストは本文が not cookie user の HTTP 403 で終了します。

  • not(0)false を返します。このブロックは実行されません。

  • not(false)false は偽値であるため、not(false)true を返します。このブロックは実行され、HTTP 403 で終了します。

eq

シグネチャ: eq(arg1: any, arg2: same type as arg1) : Boolean

2 つの値が等しいかどうかを比較します。

パラメーター:

  • arg1: 最初の値。データの型: 任意。

  • arg2: 2 番目の値。データの型: arg1 と同じ。

戻り値: 2 つの値が等しい場合、true。それ以外の場合、false

: 次の例では、and() 呼び出し内で eqne を組み合わせています。詳細については、ne セクションをご参照ください。

key1 = 'value1'
key2 = 'value2'
if and($arg_k1, $arg_k2, eq(key1, $arg_k1), ne(key2, $arg_k2)) {
    say('match condition')
}

ne

シグネチャ: ne(arg1: any, arg2: same type as arg1) : Boolean

2 つの値が等しくないかどうかを比較します。

パラメーター:

  • arg1: 最初の値。データの型: 任意。

  • arg2: 2 番目の値。データの型: 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')
}

本文が実行されるには、4 つすべての条件が true である必要があります。

  1. リクエストに k1 パラメーターが含まれていること。

  2. リクエストに k2 パラメーターが含まれていること。

  3. k1 の値は value1 です (eq でチェック) 。

  4. k2 の値は value2 と等しくありません (ne でチェックされます)。

リクエストに k1 または k2 が不足している場合、ショートサーキット評価はステップ 1 または 2 で停止し、eq()ne() も呼び出されません。

null

シグネチャ: null(v: array | dictionary | string) : Boolean

EdgeScript (ES) にデータの型が指定されているかどうかをチェックします。

パラメーター: v — 配列、辞書、または文字列。その他のデータの型を渡すと、false が返されます。

戻り値: ブール値。

  • truev が空の文字列、または要素のない配列またはディクショナリである場合。

  • falsev が空でない文字列、空でない配列またはディクショナリ、またはその他のデータの型である場合。

:

d = []
say(null(d))
set(d, 1, 'v1')
say(null(d))
say(tostring(null('x')))
say(tostring(null('')))

出力:

true
false
false
true
  • 空の配列 [] に対する null(d)true を返します。

  • set(d, 1, 'v1') の後、配列は空ではないため、null(d)false を返します。

  • null('x') — 空でない文字列 — は false を返します。

  • null('') — 空の文字列 — は true を返します。