カスタムパスから画像を提供する
Transform Rulesを使用して、Imagesを通じて変換するすべての画像のURLを書き換えることができます。
このページでは、以下のシナリオの例を説明します。
- カスタムパスから画像を提供する
- 既存のURLをImagesでの変換に対応させるために修正する
- あなたのゾーンで要求されたすべての画像をImagesを通じて変換する
ルールを作成するには、Cloudflareダッシュボードにログインし、アカウントとウェブサイトを選択します。次に、Rules > Transform Rulesを選択します。
すべてのルールは、変換リクエストの前後で実行されます。
リクエストのパスが、サーバー上に保存されている元の画像のパスと一致する場合、元の画像を取得するリクエストがループする可能性があります。
リクエストをオリジンサーバーに向けるには、Viaヘッダーにimage-resizingという文字列が含まれているかを確認できます:
...and (not (any(http.request.headers["via"][*] contains "image-resizing")))
デフォルトでは、Imagesを通じて画像を変換するリクエストは/cdn-cgi/image/パスから提供されます。
Transform Rulesを使用してURLを書き換えることができます。
FreeおよびProプランは、正規表現を必要としない文字列マッチングルールのみをサポートしています。
この例では、example.com/imagesからexample.com/cdn-cgi/image/へのリクエストを書き換えることができます:
(starts_with(http.request.uri.path, "/images")) and (not (any(http.request.headers["via"][*] contains "image-resizing")))concat("/cdn-cgi/image", substring(http.request.uri.path, 7))正規表現をサポートするTransform Rulesの高度なバージョンがあります。
この例では、example.com/imagesからexample.com/cdn-cgi/image/へのリクエストを書き換えることができます:
(http.request.uri.path matches "^/images/.*$") and (not (any(http.request.headers["via"][*] contains "image-resizing")))regex_replace(http.request.uri.path, "^/images/", "/cdn-cgi/image/")この例では、URLパラメータをImagesに対応させるために書き換えることができます:
(http.request.uri matches "^/(.*)\\?width=([0-9]+)&height=([0-9]+)$")regex_replace( http.request.uri, "^/(.*)\\?width=([0-9]+)&height=([0-9]+)$", "/cdn-cgi/image/width=${2},height=${3}/${1}")Query > Rewrite to… > Staticフィールドは空のままにしてください。
この例では、format=autoオプションを使用して、あなたのゾーンで要求されたすべての画像を変換することができます:
(http.request.uri.path.extension matches "(jpg)|(jpeg)|(png)|(gif)") and (not (any(http.request.headers["via"][*] contains "image-resizing")))regex_replace(http.request.uri.path, "/(.*)", "/cdn-cgi/image/format=auto/${1}")