【问题标题】:gcloud storage mkdocs and index.html don't play nicegcloud storage mkdocs 和 index.html 不太好用
【发布时间】:2019-01-21 09:41:33
【问题描述】:

我在谷歌云存储上托管一个由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

google storage docs 分享一些关于可能发生的事情的信息。但即使应用了他们的建议,它也不起作用。

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

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

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

非常感谢任何帮助。

【问题讨论】:

    标签: gcloud gsutil mkdocs


    【解决方案1】:

    在 GCS 部分,此行为在 the docs 中进行了解释:

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

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

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

    毫无疑问,GCS 中的问题是您没有使用自定义域。

    在 mkdocs 部分,use_directory_urls:false 似乎可以解决问题。

    【讨论】:

      猜你喜欢
      • 2015-03-09
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      相关资源
      最近更新 更多