google-cloud-platform - 如何在 Google Cloud Storage 上托管的静态站点中强制使用尾部斜线?

标签 google-cloud-platform web google-cloud-storage gsutil

我按照 https://cloud.google.com/storage/docs/hosting-static-website 上的说明在 Google Cloud Storage 存储桶上托管了一个网站。 .该网站有效,但直接导航到任何子目录页面,例如 https://example.com/blog , 会将我重定向到 https://example.com/blog/index.html ,有时这会导致另一个重定向到我的 404 页面。如果我从 https://example.com 开始,并在其他地方导航,该网站运行良好。

这是将 MainPageSuffix 设置为 index.html 并将 NotFoundPage 设置为 404.html。

如果我导航到末尾有尾部斜杠的子目录页面(例如 https://example.com/blog/ ),该站点可以正常工作。我还查看了针对 301 的故障排除建议,它运行的步骤对我不起作用。

有什么方法可以将 GCS 存储桶的尾部斜杠作为静态站点强制执行?如果没有,我如何解决重定向到 index.html 时遇到的问题?

最佳答案

如果您的 MainPageSuffix 是 index.html,当您尝试直接访问子目录(如您指示的 https://example.com/blog)时,服务会尝试查找目标对象或 https://example。 com/博客/index.html。假设/blog/不存在零字节对象,https://example.com/blog/也是如此。如果/blog/存在零字节空对象,See the Troubleshooting topic用于删除此零字节对象。删除零字节对象后,系统将显示 https://example.com/blog/index.html。如果不存在这样的对象,如果为 NotFoundPage 设置,系统将显示错误页面“404.html”。

在您的情况下,如果您在子目录/blog/下包含一个 index.html 文件,它应该通过在两种情况下显示 https://example.com/blog/index.html 页面来解决问题 https://example.com/bloghttps://example.com/blog/ .或者,您需要提供完整路径以访问子目录中的任何特定对象。

有关子目录如何工作的更多信息,请参阅以下链接。

How Subdirectories Work

来自 Recommended: Assigning specialty pages :

索引页(也称为 webserver directory index 是访问者请求没有关联文件的 URL 时提供给访问者的文件。当您分配 MainPageSuffix 时,Cloud Storage 会查找具有该名称前缀的文件匹配访问者请求的 URL。

例如,假设您将静态网站的 MainPageSuffix 设置为 index.html。此外,假设您的存储桶 www.example.com 中没有名为 directory 的文件。在这种情况下,如果用户请求 URL http://www.example.com/directory , Cloud Storage 尝试提供文件 www.example.com/directory/index.html。如果该文件不存在,Cloud Storage 会返回一个错误页面。

MainPageSuffix 还控制用户请求顶级站点时提供的文件。继续上面的例子,如果用户请求 http://www.example.com , Cloud Storage 尝试提供文件 www.example.com/index.html。

如果您仍然遇到任何问题,请提供您网站的详细信息,以便针对您的问题提供具体解决方案,并说明您期望的具体结果。

关于信息,我特意在每个 http://之后插入了一个空格,以避免在这篇文章中包含太多链接。

关于google-cloud-platform - 如何在 Google Cloud Storage 上托管的静态站点中强制使用尾部斜线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52522091/

相关文章:

python - 获取 GCP Cloud composer 上 IAM 代理的 client_id

python - 如何使用谷歌云自动化我的 jupyter 笔记本?

firebase - 错误:获取存储源时出错:generic::unknown... 当通过 GitHub Actions 部署 GCP Cloud Function 时

html - 整页网站设计的任何事实上的标准比例

python - 从 dataproc 中运行的 pyspark 作业将 python 数据对象保存到 Google 存储中的文件

javascript - Google 云存储签名 URL 上传 + Dropzone.js

c# - 为 .Net Core 选择正确版本的 GCP 数据存储库

javascript - script标签的属性src中的data属性是如何工作的?

javascript - Base64 DataURL 图片的大小限制是多少?

google-cloud-platform - 如何授予公众访问我存储在谷歌云存储中的文件的权限