Workers Static Assets: assets.base_path で /blog などのパス配下から配信する
Wrangler 4.148.0 以上なら assets.base_path = "/blog" を書くだけで、ビルド出力のディレクトリ構成を変えずに静的アセットを URL のサブパス配下で配信できる(2026-10-28)。
どんなときに使う?
- 同じドメインの
/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 のルーティングは別設定)。
出典
- @CFchangelog · 2026-10-29
- Cloudflare Docs「Serving a subdirectory」 developers.cloudflare.com