使用 S3 静态托管的 JavaScript 会话历史记录管理

JavaScript's session history management using S3 static hosting?

本文关键字:会话 历史 记录 管理 JavaScript S3 静态 使用      更新时间:2023-09-26

我目前正在开发一个主要使用JavaScript(JS)历史的网站。

现在的问题是,此历史记录使用URL的路径名。因此,例如,如果我使用 S3 作为静态托管,并且第一次想请求像 www.example.com/about 这样的 URL,S3 会将其重定向到/about 文件夹而不是加载根 (www.example.com) 并让 JS 来处理/about。当然,在静态托管的情况下,这种行为是绝对正常的,所以很棘手。

只是想知道它是否有可能在我的情况下工作,使用 S3,其中基于根 (www.example.com/) 的每个链接总是引用根网站?简而言之,我希望 S3 会完全忽略路径名。因此,如果我请求 www.example.com/about,它将仅加载位于 www.example.com/index.html.html索引,同时保留URL(www.example.com/about)。

如果这仍然不清楚,请考虑JS的location.hash(#)。浏览器在向静态 Web 服务器发出请求时会忽略该哈希,然后当加载 Web 时,其中包含的 JS 将处理给定的哈希。所以我的情况可以通过在我的 URL 中使用"#"来完全解决,但这次我想使用一个干净的 URL,它没有"#"。

谢谢你的帮助。 :)

没有

办法让 S3 忽略路径而只返回根文件(index.html)。最接近这一点的是使用捕获所有请求的错误文件,但是尽管这会加载您的 HTML 文件,但它将始终返回 404 状态。

如果您不想使用路径参数,则可以对路径使用 URL 参数而不是哈希,如下所示:

www.yoursite.com/?folder/page.html

这将导致在浏览器中加载您网站的索引文件。