出现“点击链接正常,但刷新页面提示 404 Not Found”的原因是,您的 Vue 项目使用了 history 路由模式 。
当您在前端点击页面时,是通过 JavaScript 改变的 URL ;而直接刷新页面时,浏览器会向服务器(Cloudflare)请求真实的 URL,如果服务器找不到对应的文件,就会返回 404。
使用 Cloudflare Workers
您可以在 wrangler.toml (或 wrangler.jsonc) 配置文件中,直接加上 single-page-application 的配置,无需修改任何代码:
[assets]
directory = "./dist" # 或您的打包输出目录
not_found_handling = "single-page-application" # 关键配置:让找不到的页面回退到 SPA
这个配置参数很关键。
single-page-application
在 Cloudflare Workers 中处理 not_found (404) 取决于你的部署方式:是纯逻辑 Worker 还是带有静态资源的 Worker(如 Workers Sites / Pages / 绑定 Assets)。
如果你的 Worker 托管了前端应用(如 React/Vue SPA),你可以通过 wrangler.jsonc (或 wrangler.toml) 配置资源未找到时的处理行为。
在配置文件中添加 not_found_handling。
单页应用 (SPA) 模式 ,将未匹配的路径重定向到 index.html,交给前端路由处理。
SPA 在 Github 上有讨论。
https://www.isharkfly.com/t/cloudflare-worker-404-not-found/2309


Comments