1

我在谷歌云存储上托管一个由mkdocs. 但是,我遇到的错误不应该与这个库相关。

我已设置权限,可以在以下位置查看该站点

https://storage.googleapis.com/<bucketname>/<folder>/index.html

这很好,但它无法打开此网址:

https://storage.googleapis.com/<bucketname>/<folder>/

它不承认它应该抓取index.html文件。

这对于索引页面来说不是什么大问题(我可以将用户指向该页面),但对于网站上的所有其他链接来说却是一个大问题。有一个使用此结构生成的子文件夹:

site/planning
├── week1
│   └── index.html
├── week2
│   └── index.html
├── week3
│   └── index.html
└── week4
    └── index.html

歌存储文档分享了一些可能发生的事情。但即使应用了他们的建议,它也不起作用。

> gsutil web set -m index.html gs://<bucketname>/
Setting website configuration on gs://<bucketname>/...

所以我正在寻找解决方案。我的想法是:

  1. 也许GCloud不喜欢我没有自己的域名这一事实。这应该很重要,但可能无济于事。
  2. 也许 mkdocs 中有一个设置,因此并非所有内容都是通过index.html.
  3. 不为此使用 GCloud 存储,而是使用 github/gitlab 页面或其他东西来托管此静态站点。

任何帮助深表感谢。

4

1 回答 1

2

在 GCS 部分,此行为在文档中进行了解释:

网站配置仅用于解释定向到 c.storage.googleapis.com 的 CNAME 别名的请求。(即,主机名是自定义域的请求)。例如,只有对 www.example.com 的请求才会显示索引页面。

因此,对 Cloud Storage 域(例如 storage.googleapis.com/www.example.com)的请求的 API 行为会被保留。例如,您可以继续列出 www.example.com 存储桶中的对象,就像列出任何其他存储桶一样。对于 www.example.com 存储桶,您收到的对象列表包括 404.html 和 index.html。

这主要意味着通过API地址访问对象时没有重定向或特殊行为,因为这会导致API不一致。

当然,GCS 中的问题是您没有使用自定义域。

在 mkdocs 部分,看起来use_directory_urls:false可以解决问题。

于 2018-08-14T14:16:22.193 回答