如何在Google Cloud Storage托管的静态网站中强制使用斜杠?

时间:2018-09-26 16:10:23

标签: 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时遇到的问题?

1 个答案:

答案 0 :(得分:0)

如果MainPageSuffix是index.html,则当您尝试直接访问子目录(如您指定的https://example.com/blog)时,服务将尝试查找目标对象或https://示例。 com / blog / 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显示https:// example.com/blog/index.html页面来解决此问题。或https://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://后面插入一个空格,以避免在这篇文章中包含太多链接。

相关问题