You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SPA页面刷新时出现Cannot GET错误,如何配置当前页面刷新逻辑?

SPA刷新子路由出现Cannot GET错误的解决方法

问题原因

SPA的前端路由通过history.pushState在浏览器端实现页面切换,并没有真正向服务器请求对应路径的文件。当用户刷新页面时,浏览器会直接向服务器发送GET /Garage或GET /Winners的请求,但服务器上不存在这些路径的文件,因此返回404错误。

解决步骤

1. 配置Netlify服务器重写规则

因为你的应用部署在Netlify,需要让所有请求都指向SPA的入口文件(通常是index.html),由前端路由处理路径匹配。

方法一:创建_redirects文件

在项目根目录新建名为_redirects的文件,添加以下内容:

/*    /index.html   200

这个规则表示所有路径的请求都重定向到index.html,并返回200状态码,确保服务器不会返回404,而是交给前端路由处理。

方法二:使用netlify.toml配置

如果项目中已有netlify.toml,添加以下配置:

[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

2. 前端路由代码优化

修正load事件绑定

你的代码中window.addEventListener('load', router())会立即执行router函数,而不是在load事件触发时执行,应改为:

window.addEventListener('load', router)

补充根路径路由匹配

为了让根路径/也能正确匹配到Garage页面,在路由数组中添加根路径的配置:

const routes = [
    { path: '/', view: garage },
    { path: '/Garage', view: garage },
    { path: '/Winners', view: winners },
]

完成以上配置后,重新部署项目到Netlify,刷新/Garage或/Winners页面就不会再出现Cannot GET的错误了。

内容的提问来源于stack exchange,提问作者DaroGawlik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 17:30:59