CDN Kurdum Fontlarım Görüntülenmiyor
CDN Kurulumu tamamladıktan sonra bazı sitelerde fontlar ile ilgili sıkıntı yaşanabilmektedir. Bunun sebebi CSS dosyalarının font dosyalarını çağırırken relative (göreceli) olarak başka bir alanadından çağırmasından kaynaklı olmaktadır.
http://www.siteadim.com/css/stylesheet.css
dosyasında font aşağıdaki şekilde çağırıldığını varsayalım.
@font-face {
font-family: 'HelveticaRegular';
src: url('helvetica-webfont.eot');
src: url('helvetica-webfont.eot?#iefix') format('embedded-opentype'),
url('helvetica-webfont.woff') format('woff'),
url('helvetica-webfont.ttf') format('truetype'),
url('helvetica-webfont.svg#HelveticaRegular') format('svg');
font-weight: normal;
font-style: normal;
}
CDN kurulu değilken bu css, font dosyasını
http://www.siteadim.com/css/helvetica-webfont.eot
adresinden çağırmaktadır.
CDN kurulduktan sonra css dosyası
http://cdn.siteadim.com/css/stylesheet.css
adresinden yüklenecek, font dosyasını da
http://cdn.siteadim.com/css/helvetica-webfont.eot
adresinden çağıracaktır.
Her iki durumda da açık olan sayfa http://www.siteadim.com/ olacaktır.
İlk senaryoda SAYFA + CSS + FONT aynı domain'den geliyor olmasına rağmen,
İkinci senaryoda SAYFA başka FONT başka domain'den geliyor olmaktadır.
Normal koşullarda bu bir sorun olmaması gerekirken zararlı yazılımları engellemek amacı ile güvenlik amacı ile çoğu modern tarayıcı tarafından başka alanadlarından çağırılan dosyalar engellenmektedir.
CDN Font Sorunu Çözümleri
1. CSS içerisinde fontları tam yolu ile çağırmak
CSS dosyasını açıp font dosyalarının çağırıldığı yerleri bulun
@font-face {
font-family: 'HelveticaRegular';
src: url('helvetica-webfont.eot');
}
Dosya yollarını aşağıdaki şekilde değiştirmeyi deneyin.
@font-face {
font-family: 'HelveticaRegular';
src: url('//www.siteadim.com/helvetica-webfont.eot');
}
2. Font yüklemesi yapan CSSleri ana alanadından çağırmak
Sitenizi CDN'e taşırken tüm statik içerikleri http://cdn.siteadim.com/ alanadından çağırırken sadece sorun çıkartan (dışarıdan font dosyası çağıran) CSS'leri ana alanadınızdan çağırmayı deneyin.
http://cdn.siteadim.com/css/stylesheet.css
yerine
http://www.siteadim.com/css/stylesheet.css
3. Ziyaretçilerinizin tarayıcılarına başka sitelerden font dosyaları yüklemelerini sağlamak
Sitenizin Hosting ayarlarını değiştirerek tüm tarayıcıların sitedeki CDN Fontlarını başka alanadlarından yükleyebilmesini sağlayabilirsiniz. Böylelikle CSS kodlarınızı değiştirmeye gerek kalmadan CDN yüklenmesi sonrasında oluşan font sorunu çözebilirsiniz.
Aşağıda Apache, NGINX, ve IIS 7 kullanarak bu değişikliğin nasıl yapılacağı gösterilmektedir.
APACHE
.htaccess dosyasının (tercihen en altına) aşağıdaki kodu ekleyin :
<FilesMatch "\.(ttf|otf|eot|woff|woff2)$"> <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule> </FilesMatch>
NGINX
location ~* \.(eot|ttf|woff|woff2)$ { add_header Access-Control-Allow-Origin "*"; }
IIS 7
<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="media/css/font"> <system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> </customHeaders> </httpProtocol> </system.webServer> </location> </configuration>
Web Sunucusunda bu değişikliği uyguladıktan sonra CDN Hizmetinin Ön belleğinde yer alan dosyaların yenilenmesi gerekir.
CDN Hizmeti Paneline giriş yapıp ilgili CDN kaynağında Purge All işlemi gerçekleştirip bir kaç dakika beklenmesi gerekmektedir.