gcloud storage mkdocs和index.html效果不好

时间:2018-08-14 13:44:59

标签: gcloud gsutil mkdocs

我正在由mkdocs生成的Google云存储上托管一个静态网站。但是,我遇到的错误不应与此库相关。

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

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

这很好,但是它无法打开此URL:

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页面或用于托管此静态站点的内容。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分: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可以解决问题。