对于我们这种很多年建过很多网站的团队来说,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重定向的很好工具,可以从站点的菜单中进入,也可以从账号的菜单中进入,如下面截图:
这里有点绕的是要设置“批量重定向”,还需要先设置“批量重定向列表”,之后再将“批量重定向”与“批量重定向列表”对应上,这样的好处是可以使用一些高级功能,例如只对某些满足条件的URL进行某个重定向,或者只将某个国家的用户进行某个重定向,如下图:
这个“批量重定向列表”也可以从“账号-管理账号-列表”进入,如下面截图:
要使用前还是需要阅读相关帮助文档:
- URL forwarding with Bulk Redirects (beta) (包括多篇下级展开文章)
- Handle redirects with Bulk Redirects
- Pages - Limits - Redirects (我暂时还没有尝试过)
具体某一条设置的截图如下:
可以看出,只要是用过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查看是否正确跳转,如下图所示:
注意上面红框中这样显示就表示是通过Cloudflare的批量重定向设置起作用而跳转的,如果是其它包含Cache状态的标头则是通过htaccess设置跳转的,注意区别开来,以便验证Cloudflare的批量重定向是否设置成功。
为了把Cloudflare的重定向功能发挥到极致,可以在访问数据分析、缓存分析中查看301跳转的情况、是否缓存,如果缓存未命中或者命中则都是访问了源服务器,可以尝试转到批量重定向来。
还有源服务器上的Apache日志,可以专门过滤301的访问来查看,找出规律来,也可以尝试转到Cloudflare的批量重定向来。
评论