当使用 backblaze-b2 和 cloudflare 提供静态网页时,如何让域名而不是存储桶原点出现?

当使用 backblaze-b2 和 cloudflare 提供静态网页时,如何让域名而不是存储桶原点出现?

我正在按照 backblaze 的指示通过 cloudflare 提供静态网页

其中一部分涉及创建一个 cloudflare“页面规则”,该规则从域指向 backblaze 存储桶,例如转发规则:

example.com -> https://f000.backblazeb2.com/file/example-bucket/index.html

这可以为页面提供服务。我遇到的一个问题是浏览器地址栏中显示的 URL。example.com它显示的不是f000.backblazeb2.com/file/example-bucket/index.html。是否有一个 cloudflare 页面规则可以为 backblaze bucket 提供服务,同时让原始域显示在浏览器的地址栏中?


更新:

https://example.com/我发现,如果使用带有原始 URL和目标 URL的“转发 URL”页面规则https://example.com/file/example-bucket/index.html,则在导航到example.com浏览器时至少会example.com/file/example-bucket/index.html在地址栏中显示。这至少可以向用户验证他们正在查看的内容是否在目标域下。最好只显示域而不显示以下内容/file/example-bucket/,因为这与站点的组织无关,只与存储内容的存储桶有关。有没有办法example.com/index.html从中获得更多类似的东西example.com/file/example-bucket/index.html

答案1

当一个转发 URL触发页面规则后,Cloudflare 将返回302 Found(又称为重定向)HTTP 状态代码,并将Location标头设置为您指定的 URL,而不是将请求代理到源。因此,您最初看到的是浏览器正在加载页面https://f000.backblazeb2.com/file/example-bucket/index.html

除了转发 URL 页面规则,你还需要变换规则,特别是重写 URL 规则,以便 Cloudflare重写将请求代理到原点之前的 URL。

在您的 Cloudflare 域中:

  1. 导航规则>变换规则
  2. 点击创建规则
  3. 为规则提供描述性名称,例如“将根重写为索引”。
  4. 在下面当传入请求匹配时..., 点击自定义过滤表达式
  5. 场地更改为“URI 完整”,操作员改为“等于”,并且价值到您的域的根目录,例如https://example.com/
  6. 在下面设置重写参数>小路, 点击重写为...
  7. 选择静止的并输入目标路径,不带前导的“/”,例如file/example-bucket/index.html
  8. 点击部署

现在,当传入的 URL 与 匹配时https://example.com/,Cloudflare 会将路径重写为file/example-bucket/index.html,因此它会https://f000.backblazeb2.com/file/example-bucket/index.html从原点发出请求,但浏览器中的 URL 将保留https://example.com/

相关内容