一些網站會將靜態資源用子域名分開,並且加上CDN來減少主機流量
比較便宜的作法是使用CloudFlare的Page Rule來讓它快取從子域名來的所有請求
但是這樣也會把php等動態生成的頁面也快取進去
而且使用子域名也可以訪問到語主域名相同的內容
這對於SEO很不好,所以應該將非靜態資源用301重定向回主域名
我們可以使用.htaccess檔案來設定重定向,例如將網址以php和html結尾的重定向回主域名
這是我的設定:
1 2 3 4 5 6 7 | <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^cdn.oktw.one [NC] RewriteCond %{REQUEST_URI} /$ [NC,OR] RewriteCond %{REQUEST_URI} \.(php|html)$ [NC] RewriteRule ^(.*) http://www.oktw.one/$1 [R=301,L] </IfModule> |
第三行的意思是如果請求的網址是cdn.oktw.one
第四行和第五行的意思是如果網址的結尾是”/”(目錄)或者是.php或.html結尾
第六行是如果符合上面的規則,將會301重定向到www.oktw.one
設定完之後就可以將所有靜態資源改成子域名了,可以使用W3 Total Cache的CDN功能來達到
在General Settings的CDN功能打開
並且將CDN Type改成General Mirror
然後進CDN設定裡設定Replace site’s hostname with改為子域名
然後應該會自動將所有靜態檔案都改為子域名