Cloudflare ダッシュボードでは、式 の編集方法が 2 つあります。
- Expression Builder: ドロップダウンリストを使って式を作成します。視覚的に式を定義できます。
- Expression Editor: テキストのみのインターフェースです。グループ化記号や、値の変換・検証用の関数など、高度な機能に対応します。
通常、Expression Builder と Expression Editor は行き来できます。ただし、Expression Builder は次のような高度な機能に対応していません。
編集中の式で使えるフィールドの一部が、ビルダーに表示されないこともあります。
エディターで高度な式機能を使うか、一覧にないフィールドを入力した場合、Expression Builder へ切り替えられないことがあります。式がビルダー未対応である旨の警告ポップアップが出ます。続行するには、エディターでの変更を破棄するか、切り替えをキャンセルしてエディターでの作業を続けます。
Expression Builder では、ドロップダウンリストとフィールド値の入力で、1 つまたは複数の部分式を定義し、ルール式を視覚的に作成できます。
Expression Preview は式をテキストで表示します。
(ip.src.country ne "GB")Expression Builder は、引用符付き文字列構文 を使うとき、文字列リテラル内のバックスラッシュ(\)と二重引用符(")の特殊文字を 自動でエスケープ します。
Expression Editor は、ルール式を定義するテキスト専用インターフェースです。Cloudflare の Rules 言語 の仕様全体に対応し、グループ化記号としての括弧も含みます。
Expression Editor を開くには、Expression Preview の横の Edit expression を選びます。
Expression Editor から Expression Builder へ戻るには、Use expression builder を選びます。
引用符付き文字列構文 を使う式では、文字列リテラル内のすべてのバックスラッシュ(\)と二重引用符(")をエスケープする必要があります。視覚的な Expression Builder は、これらの特殊文字の前にバックスラッシュを付けて自動エスケープします。\ と " はそれぞれ \\ と \" になります。
# Example of an expression with a " character written using quoted string syntax
http.request.uri.path eq "/foo\"bar"Expression Builder は 引用符付き文字列構文 と raw 文字列構文 の両方に対応します。raw 文字列構文には特殊文字やエスケープシーケンスがないため、終了区切りまでの文字はそのまま解釈されます。
# Example of an expression with a " character written using the raw string syntax
http.request.uri.path eq r#"/foo"bar"#ダッシュボードの Operator ドロップダウンで Matches regex を選ぶと、式プレビューは自動で raw 文字列構文を使います。それ以外では、Expression Editor に切り替えて raw 文字列構文の文字列を手動入力する必要があることがあります。この場合、Expression Builder へ戻しても、エディターで使った構文は維持されます。
引用符付き文字列構文 で 正規表現 を書く場合、追加のエスケープが必要になることがあります。詳細は 引用符付き文字列構文 を参照してください。
複雑な正規表現を書くときは、エスケープが少なくて済む raw 文字列構文 を推奨します。
Expression Editor は、グループ化記号 としての括弧に対応します。括弧で式を明示的にグループ化し、入れ子にして、対象を絞り込んだ式を作ります。
次のルール式は、マレーシア以外の訪問者が WordPress の URI パスへアクセスしようとしたリクエストに一致します。
((http.request.uri.path contains "/xmlrpc.php") or (http.request.uri.path
contains "/wp-login.php") or (http.request.uri.path contains "/wp-admin/"
and not http.request.uri.path contains "/wp-admin/admin-ajax.php" and not
http.request.uri.path contains "/wp-admin/theme-editor.php")) and
ip.src.country ne "MY"上記のような入れ子の式に対応するのは Expression Editor だけです。Expression Editor で入れ子の式を持つルールを作り、Expression Builder へ切り替えようとすると、式がビルダー未対応である旨のダイアログが出ます。Discard changes を選んで Expression Builder へ切り替えるか、Cancel を選んでエディターでの作業を続けるよう求められます。
Cloudflare は保存前にすべての式を検証します。式にエラーがあると、Cloudflare ダッシュボードに次のようなエラーメッセージが表示されます。
Filter parsing error (1:313): ((http.request.uri.path contains
"/xmlrpc.php") or (http.request.uri.path contains "/wp-login.php") or
(http.request.uri.path contains "/wp-admin/" and not
http.request.uri.path contains "/wp-admin/admin-ajax.php" and not
http.request.uri.path contains "/wp-admin/theme-editor.php")) and
ip.src.country ne "MY") ^ unrecognised input