Skip to content

Cloudflare Workersで末尾.html除去リダイレクトをやめさせる

ホスティングをFirebase HostingからCloudflare Workersに移転してからGoogle Search Consoleから代替ページ(適切な canonical タグあり)の警告が出るようになった。

確認すると末尾の.htmlがないパスへ珍しい307でリダイレクトされていた。

VitePressのデフォルトも.html付きだし、sitemap.xmlもそのパスで出力しているし、古来のホームページも.htmlが付いていたので、なるべく維持したい。

Geminiに聞いたところWorkersと書いているのにPagesの説明が出てきて役に立たなかった。

設定はCloudflareのコンソールではなく、デプロイコマンドに使われるwranglerのオプションで行うようだ。

https://developers.cloudflare.com/workers/wrangler/configuration/#assets

末尾スラッシュの制御を行うhtml_handlingが末尾拡張子の除去も行っているようでnoneでよさそう。

Gitレポジトリのルートに以下のwrangler.jsoncファイルを設置してデプロイしたところ、リダイレクトは止まった。 コマンドに付けていた他の設定もこのファイルに移動した。

jsonc
{
  "name": "yama-u",
  "compatibility_date": "2025-08-17",
  "assets": {
    "directory": ".vitepress/dist",
    "not_found_handling": "single-page-application",
    "html_handling": "none"
  }
}

VitePressはサイト内遷移はSPA的な挙動のため、not_found_handlingsingle-page-applicationにしておく必要がある。noneにしたところ、トップページが404になってしまった。

Cloudflare WorkersとVitePressの情報は少なくAIもPagesの情報ばかりで役に立たない。手探りでまだいろいろ試す必要がありそうで楽しい。

Amazonのアソシエイトとして、やまユーは適格販売により収入を得ています。

powered by VitePress.