URL 正規化は、受信 URL の区切り文字、エンコード済み要素、リテラルバイトを書き換え、一貫した書式に揃えます。
たとえば、www.example.com/hello に一致する URL のリクエストをブロックする WAF カスタムルールがあるとします。エンコード済み要素を含むリクエスト(www.example.com/%68ello)は、このルールではブロックされません。Cloudflare のグローバルネットワークで受信 URL を正規化すると、URL を含むルール式をシンプルにできます。
利用できる URL 正規化の種類は次の 2 つです。
URL 正規化が行われる場所は、設定内容 によって決まります。
各設定と、リクエスト URL への影響の例は URL 正規化の例 を参照してください。
RFC 3986 ↗ に従う URL 正規化の内容は次のとおりです。
- 次の unreserved 文字は パーセントデコード ↗ されます(
%XX形式から元の文字に戻します)。- 英字:
a-z、A-Z(%41-%5Aと%61-%7Aからデコード) - 数字:
0-9(%30-%39からデコード) - ハイフン
-(%2D)、ピリオド.(%2E)、アンダースコア_(%5F)、チルダ~(%7E)
- 英字:
- 次の reserved 文字はエンコードもデコードもしません:
: / ? # [ ] @ ! $ & ' ( ) * + , ; = - そのほかの文字(リテラルバイト値など)はパーセントエンコードします。
- パーセントエンコード表現は大文字に揃えます。
- URL パスは Remove Dot Segments ↗ プロトコルに従って正規化します。
Cloudflare の URL 正規化を使うと、受信リクエストの URL に対して、次の順で追加の正規化が適用されます。
- バックスラッシュ(
\)をフォワードスラッシュ(/)に正規化します。 - 連続するフォワードスラッシュをまとめます(たとえば
//は/になります)。 - 得られた URL に RFC 3986 正規化 を適用します。