Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

URL パスのエンコード済みスラッシュを正規化する

Transform Rules の URL rewrite rule を作成し、リクエストパス内のエンコード済みフォワードスラッシュ(%2F)を通常のスラッシュ(/)に正規化します。

最終更新 Markdown で表示Agent セットアップ

Web サーバーやアプリケーションによって、URL 内のエンコード済みフォワードスラッシュ(%2F)の扱い方は異なります。Cloudflare は RFC 3986 に従い、%2F を自動では / に正規化しません。/ は URL の reserved 文字であり、デコードするとパスの意味が変わる可能性があるためです。

一方、多くのオリジンサーバーはリクエスト処理時に %2F を自動で / にデコードします。オリジンがこの動作をする場合は、Cloudflare のエッジでも同じ正規化を行い、リクエスト処理、ルール評価、ログの一貫性を保てます。

%2F を正規化する方法

エンコード済みフォワードスラッシュ(%2F)を、後続の ルール評価の前に通常のスラッシュ(/)へ正規化するには、新しい URL rewrite rule を作成し、url_decode() 関数を使った動的な URL パスのリライトを定義します。

Expression Editor に入力するテキスト:

(lower(raw.http.request.full_uri) wildcard "*%2f*")

Path > Rewrite to > Dynamic のあとに入力するテキスト:

url_decode(http.request.uri.path)

この変換により、リクエストパス内の %2F は常に / として扱われます。URL パス一致に依存するルールを設定するときに、正規化の違いによる不一致を防げます。

役に立ちましたか?