對于我們這種很多年建過很多網站的團隊來說,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的批量重定向來。
评论