我按照 backblaze 的说明通过 cloudflare 提供静态网页。
其中一部分涉及创建一个 cloudflare“页面规则”,该规则从域定向到 backblaze 存储桶,例如转发规则:
example.com -> https://f000.backblazeb2.com/file/example-bucket/index.html
这可以为页面提供服务。我遇到的一个问题是浏览器地址栏中显示的网址。而不是example.com
它显示的f000.backblazeb2.com/file/example-bucket/index.html
。是否有一个 cloudflare 页面规则可以为 backblaze 存储桶提供服务,同时保持原始域出现在浏览器地址栏中?
更新:
我发现,使用带有源 URLhttps://example.com/
和目标 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
from 的东西example.com/file/example-bucket/index.html
?
当触发转发 URL页面规则时,Cloudflare 返回一个
302 Found
(也称为重定向)HTTP 状态代码,其中Location
标头设置为您指定的 URL,而不是将请求代理到源。因此,您最初看到的是浏览器加载页面https://f000.backblazeb2.com/file/example-bucket/index.html
。您不需要转发 URL 页面规则,而是需要转换规则,特别是重写 URL 规则,以便 Cloudflare在将请求代理到源之前重写URL。
在您的 Cloudflare 域中:
https://example.com/
。file/example-bucket/index.html
。现在,当传入的 URL 匹配 时
https://example.com/
,Cloudflare 会将路径重写为file/example-bucket/index.html
,因此它会https://f000.backblazeb2.com/file/example-bucket/index.html
从源请求,但浏览器中的 URL 将保留https://example.com/
。