我正在按照 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 域中:
- 导航规则>变换规则。
- 点击创建规则。
- 为规则提供描述性名称,例如“将根重写为索引”。
- 在下面当传入请求匹配时..., 点击自定义过滤表达式。
- 放场地更改为“URI 完整”,操作员改为“等于”,并且价值到您的域的根目录,例如
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/
。