amazon-s3 – 禁用Gatsby中的客户端路由

是否可以在Gatsby中禁用客户端路由?

我正在使用Gatsby生成一个静态站点,该站点只有一个页面,将从AWS / S3提供.我遇到了Gatsby在页面和Gatsby运行时加载后从URL中删除对象后缀(https://s3.amazonaws.com/top-bucket/sub-bucket/index.html变为https://s3.amazonaws.com/top-bucket/sub-bucket/)导致的问题.如果我禁用JavaScript,就不会发生这个问题,所以我很确定它是由Gatsby使用React / Reach路由器引起的.

有没有办法禁用这种行为?我知道我可以在S3上设置重定向来处理对存储桶的请求,但如果可能的话,我更愿意在应用程序级别执行此操作.

最佳答案 这是一个hack,可能无法在其他任何人的应用程序中工作或打破Gatsby的未来版本,但我能够通过设置window.page.path = window.location.pathname来阻止此重定向;在gatsby-browser.js中.这会使
production-app.js中的条件检查短路,该检查尝试“使规范路径与实际路径匹配”并导致上面引用的(IMO)意外行为.

点赞