テック技報最新号へ →
インフラ

Workers Static Assets: assets.base_path で /blog などのパス配下から配信する

Wrangler 4.148.0 以上なら assets.base_path = "/blog" を書くだけで、ビルド出力のディレクトリ構成を変えずに静的アセットを URL のサブパス配下で配信できる(2026-10-28)。

@CFchangelog · 2026-10-31
#cloudflare#workers#static-assets#wrangler#routing

どんなときに使う?

  • 同じドメインの /blog や /docs だけを別の Worker(別リポジトリのブログなど)に任せたい
  • フレームワークの出力を dist/blog/... に入れ直すためだけのビルド手順を消したい
  • 既存サイトの route = "example.com/blog/*" に後から静的サイトを差し込みたい

やり方

wrangler.jsonc:

jsonc
{
  "name": "blog",
  "main": "src/index.js",
  "route": "example.com/blog/*",
  "assets": {
    "directory": "dist",
    "base_path": "/blog"
  }
}

wrangler.toml なら [assets] に base_path = "/blog"。cloudflare.config.ts(cf CLI 1.0.0-beta.13 以上)では worker.assets.basePath: "/blog" で、ディレクトリはビルド設定側が決める。

このとき dist/index.html は /blog/、dist/posts/post1.html は /blog/posts/post1 で返る。/blog の外へのリクエストでは静的アセットは解決されない。

注意点

  • env.ASSETS.fetch() も公開パスで考える。 受け取ったリクエストをそのまま渡すなら変更不要だが、自分で URL を組み立てるときは env.ASSETS.fetch("https://assets.local/blog/posts/post1") のように /blog を含める。
  • _headers、_redirects、assets.run_worker_first のパスも公開 URL 基準。 /blog を付け忘れるとルールが当たらない。
  • route 側も /blog/* に合わせておく(base_path はアセットの解決先を変えるだけで、Worker のルーティングは別設定)。

出典

X の元の投稿を開く