当前位置

采用Cloudflare的批量重定向功能降低源服务器负载

James Qi 在 2022年8月29日 - 18:23 提交

对于我们这种很多年建过很多网站的团队来说,301重定向是一项重要的功能需求。很多时候我们的域名变更、路径改变、语言版本的调整等等都是网址的永久性改变,需要用到301重定向。

以前我们多是用Apache Rewrite功能来设置,也就是在.htaccess文件中设置跳转规则,例如:

RewriteCond     %{HTTP_HOST}  ^(subdomain-1|subdomain-2|subdomain-3)\.example\.com$
RewriteRule     ^(.*)$        https://example.com/ [L,R=301]

就是把3个废弃的子域名站点的URL都跳转到主域名的根路径下。

这种设置很灵活、简单,接受访问的时候负载也不算大,不过当有大量类似跳转的时候,对服务器的影响也不小,例如我们一台Web服务器上每天有几百万的访问量时,其中301状态就有几十万也很正常,在服务器的负载高峰期也是不容忽略的影响。

我们前年开始使用Cloudflare,去年在更多网站上都使用了CDN(Cloudflare或者百度云加速),在页面规则中也用到过301重定向的功能,还是很方便的,特别是有*星号通配符以及$引用变量就很强大了,但因为页面规则数量比较少,所以不能大规模使用。

而下面的“批量重定向”功能就是设置更多301重定向的很好工具,可以从站点的菜单中进入,也可以从账号的菜单中进入,如下面截图:

Cloudflare批量重定向

这里有点绕的是要设置“批量重定向”,还需要先设置“批量重定向列表”,之后再将“批量重定向”与“批量重定向列表”对应上,这样的好处是可以使用一些高级功能,例如只对某些满足条件的URL进行某个重定向,或者只将某个国家的用户进行某个重定向,如下图:

按国家进行URL批量重定向

这个“批量重定向列表”也可以从“账号-管理账号-列表”进入,如下面截图:

Cloudflare重定向列表

要使用前还是需要阅读相关帮助文档:

具体某一条设置的截图如下:

Cloudflare批量重定向列表的添加

可以看出,只要是用过apache htaccess来做跳转,应该都会很快学会如何在Cloudflare中设置。

状态可以选择

  • 301:Moved Permanently,永久移动(HTTP 1.0规范)
  • 302:Found, also known as Moved temporarily,临时移动(HTTP 1.0规范)
  • 307:Temporary Redirect,临时重定向(HTTP 1.1规范)
  • 308:Permanent Redirect,永久重定向(HTTP 1.1规范)

参数可以选择

  • 保留查询字符串:传递?page=123这样的URL
  • 包括子域:匹配*.subdomain1.example.com这样的URL
  • 子路径匹配:匹配/abc/def?page=123这样的URL
  • 保留路径后缀:传递/abc/def这样的URL

对于有大量的批量重定向需要设置的,可以导入CSV文件,请看文档:CSV file format to create Bulk Redirects,格式例子:

subdomain1.example.com,https://example.com,301,FALSE,FALSE,TRUE,FALSE
subdomain2.example.com,https://example.com,301,FALSE,FALSE,TRUE,FALSE
subdomain3.example.com,https://example.com,301,FALSE,FALSE,TRUE,FALSE

虽然这个批量重定向的数量限制大于页面规则的数量限制,但在某些特殊情况下还是需要页面规则,例如:多个子域名可以用通配符的页面规则abc*.example.com,或者*example.com/*?amp=的路径中去掉?amp=就必须用页面规则才能实现。

另外,Cloudflare中还有一个URL重写规则(访问者URL不变),与重定向规则(访问者URL变化)是有区别的,具体请看:URL Rewrite Rules

设置完了以后,可以在Chrome浏览器中打开F12 - Network查看是否正确跳转,如下图所示:

Chrome浏览器Network查看301

注意上面红框中这样显示就表示是通过Cloudflare的批量重定向设置起作用而跳转的,如果是其它包含Cache状态的标头则是通过htaccess设置跳转的,注意区别开来,以便验证Cloudflare的批量重定向是否设置成功。

为了把Cloudflare的重定向功能发挥到极致,可以在访问数据分析、缓存分析中查看301跳转的情况、是否缓存,如果缓存未命中或者命中则都是访问了源服务器,可以尝试转到批量重定向来。

Cloudflare缓存概况中过滤301查看详情

还有源服务器上的Apache日志,可以专门过滤301的访问来查看,找出规律来,也可以尝试转到Cloudflare的批量重定向来。

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。